RabbitMQ es un software de intermediación de mensajes de código abierto (a veces llamado middleware orientado a mensajes ) que originalmente implementó el Protocolo de cola de mensajes avanzado (AMQP) y desde entonces se ha ampliado con una arquitectura de complemento para admitir el Protocolo de mensajería orientada a texto en tiempo real (STOMP), el Transporte de telemetría MQ (MQTT) y otros protocolos. [1]
El servidor RabbitMQ está escrito en Erlang y se basa en el marco de trabajo Open Telecom Platform para la agrupación en clústeres y la conmutación por error. Las bibliotecas de cliente para interactuar con el agente están disponibles para todos los lenguajes de programación principales. El código fuente se publica bajo la licencia pública de Mozilla .
Desde noviembre de 2020, hay ofertas comerciales disponibles de RabbitMQ para soporte y funciones empresariales: "VMware RabbitMQ OVA", "VMware RabbitMQ" y "VMware RabbitMQ for Kubernetes" (diferentes niveles de funciones) [2] RabbitMQ de código abierto también está empaquetado por Bitnami [3] y comercialmente para Tanzu Application Service de VMware.
Originalmente desarrollado por Rabbit Technologies Ltd., que comenzó como una empresa conjunta entre LShift y CohesiveFT en 2007, [4] RabbitMQ fue adquirido en abril de 2010 por SpringSource , una división de VMware . [5] El proyecto pasó a formar parte de Pivotal Software en mayo de 2013. [6] Que luego fue adquirido nuevamente por VMWare en diciembre de 2019. [7]
El proyecto consiste en:
Esta sección proporciona programas de muestra escritos en Python (usando el paquete pika ) para enviar y recibir mensajes usando una cola.
El siguiente fragmento de código establece una conexión, se asegura de que la cola de destinatarios exista, luego envía un mensaje y finalmente cierra la conexión.
#!/usr/bin/env python3 importa pikaconexión = pika . BlockingConnection ( pika . ConnectionParameters ( host = "localhost" )) canal = conexión . canal () canal . queue_declare ( cola = "hola" ) canal . basic_publish ( exchange = "" , route_key = "hola" , cuerpo = "¡Hola mundo!" ) print ( "[x] Se envió '¡Hola mundo!'" ) conexión . close ()
De manera similar, el siguiente programa recibe mensajes de la cola y los imprime en la pantalla: (Nota: este ejemplo no confirma la recepción del mensaje).
#!/usr/bin/env python3 importa pikadef callback ( ch , método , propiedades , cuerpo ): print ( " [x] Recibido %r " % cuerpo )connection = pika . BlockingConnection ( pika . ConnectionParameters ( host = "localhost" )) channel = connection . channel () channel . queue_declare ( queue = "hello" ) print ( " [*] Esperando mensajes. Para salir, presione Ctrl+C" ) channel . basic_consume ( queue = "hello" , on_message_callback = callback ) channel . start_ducing ()