Herramientas de usuario

Herramientas del sitio


comb:rabbitmq

¡Esta es una revisión vieja del documento!


RabbitMQ

Configuration

Install

$ echo "deb http://www.rabbitmq.com/debian/ testing main" >> /etc/apt/sources.list
$ wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
$ sudo apt-key add rabbitmq-signing-key-public.asc
$ sudo apt-get install rabbitmq-server

Commands

Manage the server

$ sudo service rabbitmq-server status

Where status can be start, stop, restart

See number of messages

$ sudo rabbitmqctl list_queues
$ sudo rabbitmqctl list_queues name messages_ready messages_unacknowledged

Use

Producer & consumer

Producer

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import pika
 
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
for i in xrange(100):
    msg = 'Hello World! - ' + str(i)
    channel.basic_publish(exchange='', routing_key='hello', body=msg)
    print " [x] Sent", msg
connection.close()

Consumer

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import pika
 
 
def callback(ch, method, properties, body):
    print " [x] Received %r" % (body,)
 
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
print ' [*] Waiting for messages. To exit press CTRL+C'   
channel.basic_consume(callback, queue='hello', no_ack=True)
channel.start_consuming()
  • no_ack means no acknowledgement messages.

Message acknowledgment and persistent queues

  • Message acknoledgement is done after connection dies.
    • Message acknoledgement is active by default, it is defined by no_ack parameter.
  • Persistent messages and queues are those which remain in the computer even if the computer or rabbit crash.
    • They are activated marking the queue as durable and the delivery_mode property with a value 2.
comb/rabbitmq.1405416636.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)