RabbitMQ és un agent de missatges o broker de codi obert que implementa el protocol AMQP (acrònim d'Advanced Message Queuing Protocol). El servidor RabbitMQ està escrit amb el llenguatge de programació Erlang i construït amb l'entorn Open Telecom Platform. Les biblioteques RabbitMQ són disponibles per a la majoria de llenguatges de programació. RabbitMQ va ser creat per Rabbit Technologies Ltd. El 2010 aquesta companyia va ser adquirida per  SpringSource, una divisió de VMware.

Parts El projecte RabbitMQ consta de diferents parts: El servidor d'intercanvi RabbitMQ. Passarel·les per als protocols HTTP, XMPP i STOMP. Biblioteques de clients per a Java i el framework .NET. (Biblioteques similars per a d'altres llenguatges també es troben disponibles). El plugin Shovel (pala) que s'encarrega de copiar (replicar) missatges des d'un corredor de missatges a d'altres.

Exemple Aquesta secció presenta una mostra de programa escrita en Python per a enviar i rebre missatges emprant una cua :

Enviar El següent codi estableix una connexió, assegura que la cua del recipient existeix, llavors envia un missatge i finalment tanca la connexió :

#!/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='Hello World!') print(" [x] Sent 'Hello World!'") connection.close()

Rebre Igualment, el següent codi rep missatges de la cua i els visualitza a la 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(callback, queue='hello', no_ack=True) channel.start_consuming()

Vegeu també Agent de missatges Altres brokers : Apache ActiveMQ, Mosquitto, HornetQ

Referències

Categoria:Programació Categoria:Programari lliure Categoria:Protocols de xarxa