Ejemplo de productor y consumidor con RabbitMQ y Python

En esta pequeña guía vamos a levantar un servicio RabbitMQ usando Docker en nuestro PC. 

Luego ejecutaremos un productor y un consumidor muy sencillos escritos en Python.

Esto te puede servir como primer contacto con esta tecnología de intercambio de mensajes.


0 - Entorno

  • Hardware: MacBook Pro (13 pulgadas, 2019, cuatro puertos Thunderbolt 3)


1 - Arranca el servicio de Rabbit

Ejecutaremos el siguiente comando para ejecutar la imagen de Rabbit:

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management

Si todo va bien, veremos unas trazas similares a:


Además podemos acceder al monitor de Rabbit en http://localhost:15672/ con el usuario guest/guest:


2 - Escribir el productor y el consumidor en Python

Existen clientes de Rabbit en muchísimos lenguajes, usaremos Python por su simplicidad.

Crearemos un directorio llamado por ejemplo 'rabbit' en el cual crearemos dos ficheros:

  • emisor.py
  • receptor.py
El contenido de los ficheros será el siguiente:

emisor.py

#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='', routing_key='hello', body='Hola Mundo!')
print(" [x] Sent 'Hola Mundo!'")
connection.close()


receptor.py

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

Vemos que hemos importado una librería llamada pika, por lo tanto antes de ejecutar los scripts, instalaremos esta librería:

pip install pika

Ya estamos listos para lanzar los scripts.

3 - Ejecutar el productor y el consumidor

Ahora podremos abrir dos CMD, levantando primero el receptor:

python receptor.py





y luego el emisor:

python emisor.py



Tras enviar el mensaje podremos volver a la consola del receptor y ver que ha recibido el mensaje:




Así de simple!

Comentarios