Aller au contenu
Wikipédia l'encyclopédie libre

RabbitMQ

Un article de Wikipédia, l'encyclopédie libre.
RabbitMQ
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.3.1 ()[1] Voir et modifier les données sur Wikidata
Dépôt github.com/rabbitmq/rabbitmq-server Voir et modifier les données sur Wikidata
Écrit en Erlang Voir et modifier les données sur Wikidata
Système d'exploitation Multiplateforme (d)Voir et modifier les données sur Wikidata
Type Agent de messages Voir et modifier les données sur Wikidata
Licence MPL-2.0 Voir et modifier les données sur Wikidata
Site web www.rabbitmq.com Voir et modifier les données sur Wikidata

modifier - modifier le code - voir Wikidata (aide)

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.

Historique

[modifier | modifier le code ]

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

[modifier | modifier le code ]

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

[modifier | modifier le code ]

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[6]  :

#!/usr/bin/env python
importpika
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

[modifier | modifier le code ]

Réception du message[6]  :

#!/usr/bin/env python
importpika
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
print(' [*] Waiting for messages. To exit press CTRL+C')
defcallback(ch, method, properties, body):
 print(" [x] Received %r" % body)
channel.basic_consume(callback, queue='hello', no_ack=True)
channel.start_consuming()

Producteur

[modifier | modifier le code ]

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

// 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');

Consommateur

[modifier | modifier le code ]
// 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);

Articles connexes

[modifier | modifier le code ]

Références

[modifier | modifier le code ]
  1. « Release 4.3.1 », (consulté le )
  2. « Launch of RabbitMQ Open Source Enterprise Messaging », Press release,‎ (lire en ligne, consulté le )
  3. « Rabbit Technologies announce acquisition by SpringSource », Press release,‎ (lire en ligne [archive du ], consulté le )
  4. « Proudly part of Pivotal », Press release,‎ (lire en ligne [archive du ], consulté le )
  5. « Messaging that just works — RabbitMQ », sur www.rabbitmq.com
  6. a et b (en) « RabbitMQ - RabbitMQ tutorial - "Hello world!" », sur www.rabbitmq.com (consulté le )
  7. « RabbitMQ tutorial - "Hello World!" — RabbitMQ », sur www.rabbitmq.com

AltStyle によって変換されたページ (->オリジナル) /