RabbitMQ

logiciel libre d'agent de messages From Wikipedia, the free encyclopedia

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.

Développé par Jean-Sébastien Pédron (d), Michael Klishin (d), Hubert Plociniczak (d) et Matthias Radestock (d)Voir et modifier les données sur Wikidata
Dernière version 4.2.1 ()[1]Voir et modifier les données sur Wikidata
Faits en bref Développé par, Dernière version ...
RabbitMQ
Description de l'image RabbitMQ logo.svg.
Description de l'image Grafana dashboard for MusicBrainz RabbitMQ screenshot.webp.
Informations
Développé par Jean-Sébastien Pédron (d), Michael Klishin (d), Hubert Plociniczak (d) et Matthias Radestock (d)Voir et modifier les données sur Wikidata
Dernière version 4.2.1 ()[1]Voir et modifier les données sur Wikidata
Dépôt github.com/rabbitmq/rabbitmq-serverVoir et modifier les données sur Wikidata
Écrit en ErlangVoir et modifier les données sur Wikidata
Système d'exploitation Multiplateforme (d)Voir et modifier les données sur Wikidata
Type Agent de messagesVoir et modifier les données sur Wikidata
Licence MPL-2.0Voir et modifier les données sur Wikidata
Site web www.rabbitmq.comVoir et modifier les données sur Wikidata
Fermer

Historique

RabbitMQ est initialement développé par Rabbit Technologies Ltd., une société créée conjointement par LShift et CohesiveFT en 2007[2], avant d'être acquise en par SpringSource (en), une division de VMware[3].

En , il incorpore Pivotal Software[4].

En 2018, il est utilisé dans plus de 35 000 entreprises[5].

Composants

Le projet est constitué de :

  • Un serveur d'échange RabbitMQ.
  • Des passerelles pour protocoles AMQP, HTTP, STOMP, et MQTT.
  • Des bibliothèques de client AMQP pour Java, .NET Framework, et Erlang (mais d'autres ont été développés par des tiers).
  • Une plateforme de module d'extension avec une collection prédéfinie, incluant :
    • "Shovel" : réplication de messages entre les agents de messages.
    • "Federation" : partage de messages entre les agents (au niveau exchange).
    • "Management" : surveillance et contrôle des agents et de leurs groupes.

Exemples d'utilisation

Python

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

Envoi d'un message dans une queue[6] :

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

Réception du message[6] :

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

PHP

Producteur

L'exemple suivant envoie un message JSON directement dans une queue, sans passer par un bus d'échange[7].

// Création d'une queue persistante où empiler les messages :
$channel->queue_declare('ma_queue_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_queue_1');

Consommateur

// Fonction de traitement de chaque message
$callback = function ($message) {
  var_dump($message);
};
// Récupération du message de la queue (ce qui le supprime)
$channel->basic_consume('ma_queue_1', '', false, true, false, false, $callback);

Références

Related Articles

Wikiwand AI