RabbitMQ és un software de negociació de mensages de còdic obert que funciona com un middleware de mensageria. Implementa l'estàndart Advanced Message Queuing Protocol (AMQP). El servidor RabbitMQ està escrit en Erlang i utilisa el framework Open Telecom Platform (OTP) per a construir les seues capacitats d'eixecució distribuïda i conmutación davant errors. Rabbit Technologies Ltd., la companyia que ho desenrolla, va ser adquirida en abril de 2010 per la divisió SpringSource de VMWare. A partir d'este moment, és esta última companyia la que desenrolla i dona soport per a RabbitMQ. El còdic font està lliberat baix la llicència Mozilla Public License. A partir de maig de 2013, per una unió d'empreses, Pivotal és el nou patrocinador del proyecte

RabbitMQ

Parts del software

El proyecte RabbitMQ consta de diferents parts:

  • El servidor d'intercanvi RabbitMQ, que rep els mensages i els almagasena en coes d'intercanvi. Els clients podran despuix recuperar-els.
  • Passareles per als protocols HTTP, XMPP i STOMP.
  • Biblioteques de clients per a Java, framework . NET i Python.
  • El plugin Shovel (en anglés: pala) que s'encarrega de replicar mensages entre corredors de mensages.

Eixemples

Esta secció dona eixemples d'us en Python (usant el paquet Pika) per a un emissor i un receptor de mensages.

Emissor

El següent fragment de còdic establix la conexió, s'assegura de que la coa de mensages existix, envia el mensage i finalment tanca la conexió.

 #!/usr/bin/env python
 import pika # Importem el paquet Pika
 connection = pika. BlockingConnection(pika. ConnectionParameters(host='localhost')) # Obtenim la conexió al servidor
 channel = connection. channel() # Cregam el canal de comunicació
 channel. queue_declare(queue='hello') # Declarem la coa de mensages
 channel. basic_publish(exchange='', routing_key='hello', body='Hola Món!') # Publiquem el mensage en la coa
 print(" [x] Sent 'Hola Món!'") # Vàrem mostrar lo enviat per pantalla
 connection. close() # Tanquem la conexió.

Receptor

Similarmente, el següent programa rep el mensage i ho imprimix 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_consumix(queue='hello', on_message_callback=callback)
 channel. start_consuming()

Vore també

Referències