| Développé par | Jean-Sébastien Pédron (d), Michael Klishin (d), Hubert Plociniczak (d) et Matthias Radestock (d) |
|---|---|
| Dernière version | 4.4.0 () |
| Dépôt | github.com/rabbitmq/rabbitmq-server |
| Écrit en | Erlang |
| Système d'exploitation | Multiplateforme (d) |
| Type | Agent de messages |
| Licence | MPL-2.0 |
| Site web | www.rabbitmq.com |
RabbitMQ est un logiciel d'agent de messages open source qui met en œuvre le protocole Advanced Message Queuing (AMQP), mais fonctionne aussi avec des plugins Streaming Text Oriented Messaging Protocol (STOMP) et Message Queuing Telemetry Transport (MQTT). Le serveur RabbitMQ est écrit dans le langage de programmation Erlang.
RabbitMQ est initialement développé par Rabbit Technologies Ltd., une société créée conjointement par LShift et CohesiveFT en 2007, avant d'être acquise en par SpringSource (en), une division de VMware.
En , il incorpore Pivotal Software.
En 2018, il est utilisé dans plus de 35 000 entreprises.
Le projet est constitué de :
Cette section propose des exemples de programmes écrits en Python pour l'envoi et la réception de messages à l'aide d'une file d'attente.
Envoi d'un message dans une file d'attente :
#!/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()
Réception du message :
#!/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()
L'exemple suivant envoie un message JSON directement dans une file d'attente, sans passer par un bus d'échange.
// Création d'une file d'attente persistante où empiler les messages :
$channel->queue_declare('ma_file_1', false, true, false, false);
// Création du message
$message = new AMQPMessage('Hello World!');
// Envoi du message dans la queue
$channel->basic_publish(json_encode($message), '', 'ma_file_1');
// Fonction de traitement de chaque message
$callback = function ($message) {
var_dump($message);
};
// Récupération du message de la file d'attente (ce qui le supprime)
$channel->basic_consume('ma_file_1', '', false, true, false, false, $callback);