RabbitMQ es un software de negociación de mensajes de código abierto que funciona como un middleware de mensajería. Implementa el estándar Advanced Message Queuing Protocol (AMQP). El servidor RabbitMQ está escrito en Erlang y utiliza el framework Open Telecom Platform (OTP) para construir sus capacidades de ejecución distribuida y conmutación ante errores. Rabbit Technologies Ltd., la compañía que lo desarrolla, fue adquirida en abril de 2010 por la división SpringSource de VMWare. A partir de este momento, es esta última compañía la que desarrolla y da soporte para RabbitMQ.[1]​ El código fuente está liberado bajo la licencia Mozilla Public License. A partir de mayo de 2013, por una unión de empresas, Pivotal es el nuevo patrocinador del proyecto[2]

RabbitMQ
Información general
Tipo de programa AMQP, middleware orientado a mensajería
Desarrollador Pivotal Software
Licencia Mozilla Public License
Estado actual Con Soporte
Idiomas Inglés
Información técnica
Programado en Erlang
Plataformas admitidas i386, x86_64
Versiones
Última versión estable 3.10.5 ( 06 de junio de 2022 (2 años, 5 meses y 3 días))
Asistencia técnica
Rabbit Technologies Ltd (RTL), los desarrolladores originales, ofrecen soporte a nivel de empresa y servicios relacionados con las organizaciones que utilizan RabbitMQ. También se puede encontrar documentación en su website, así como información de instalaciones de RabbitMQ realizadas sin ninguna clase de soporte (in the wild).
Enlaces

Partes del software

editar

El proyecto RabbitMQ consta de diferentes partes:

  • El servidor de intercambio RabbitMQ, que recibe los mensajes y los almacena en colas de intercambio. Los clientes podrán después recuperarlos.
  • Pasarelas para los protocolos HTTP, XMPP y STOMP.
  • Bibliotecas de clientes para Java, framework .NET y Python.
  • El plugin Shovel (en inglés: pala) que se encarga de replicar mensajes entre corredores de mensajes.

Ejemplos

editar

Esta sección da ejemplos de uso en Python (usando el paquete Pika) para un emisor y un receptor de mensajes.

Emisor

editar

El siguiente fragmento de código establece la conexión, se asegura de que la cola de mensajes existe, envía el mensaje y finalmente cierra la conexión.

 #!/usr/bin/env python
 import pika # Importamos el paquete Pika
 connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) # Obtenemos la conexión al servidor
 channel = connection.channel() # Creamos el canal de comunicación
 channel.queue_declare(queue='hello') # Declaramos la cola de mensajes
 channel.basic_publish(exchange='', routing_key='hello', body='Hola Mundo!') # Publicamos el mensaje en la cola
 print(" [x] Sent 'Hola Mundo!'") # Mostramos lo enviado por pantalla
 connection.close() # Cerramos la conexión.

Receptor

editar

Similarmente, el siguiente programa recibe el mensaje y lo imprime en pantalla:

 #!/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()

Véase también

editar

Referencias

editar
  1. «"Rabbit Technologies announces acquisition by SpringSource"» (en inglés). 13 de abril de 2010. Archivado desde el original el 2 de junio de 2013. Consultado el 19 de mayo de 2010. 
  2. «"Proudly part of Pivotal"» (en inglés). 14 de mayo de 2013. Archivado desde el original el 2 de junio de 2013. Consultado el 29 de mayo de 2015.