RabbitMQ
RabbitMQ è un message-oriented middleware (detto anche broker di messaggistica) che implementa il protocollo Advanced Message Queuing Protocol (AMQP). Il server RabbitMQ è scritto in Erlang e si basa sul framework Open Telecom Platform (OTP) per la gestione del clustering e del failover. Le librerie client per interfacciarsi a questo broker sono disponibili per diversi linguaggi.
RabbitMQ software | |
---|---|
![]() | |
![]() | |
Genere | message-oriented middleware (non in lista) |
Sviluppatore | Pivotal |
Ultima versione | 3.6.9 (2017 marzo 29 | )
Sistema operativo | Multipiattaforma |
Linguaggio | Erlang |
Licenza | Mozilla Public License (licenza libera) |
Lingua | Inglese |
Sito web | www.rabbitmq.com/ |
Storia
Rabbit Technologies è nata nel 2007 come una joint venture tra LShift e CohesiveFT, ed è stata acquisita nell'aprile 2010 da SpringSource, una divisione di VMware. Il progetto è diventato parte del Pivotal Software a maggio 2013.
Esempi
In questa sezione si trova un esempio di programma scritto in Python per inviare e ricevere messaggi su una coda.
Invio
Il seguente codice stabilisce una connessione, controlla l'esistenza della coda, invia il messaggio e chiude la connessione:
#!/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()
Ricezione
Il seguente codice stabilisce una connessione, controlla l'esistenza della coda, riceve il messaggio e lo stampa a schermo:
#!/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()