You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
montpelliermaalsi2024/rabbit/producer_consumer.md

3.1 KiB

Pour créer deux micro-services Python qui communiquent via RabbitMQ, vous pouvez suivre les étapes suivantes. Nous allons créer un producteur (producer) et un consommateur (consumer). Le producteur enverra des messages à une file d'attente RabbitMQ, et le consommateur lira ces messages.

Prérequis

  1. Installer RabbitMQ: Assurez-vous que RabbitMQ est installé et en cours d'exécution sur votre machine. Vous pouvez télécharger RabbitMQ depuis le site officiel.

  2. Installer les bibliothèques Python nécessaires: Vous aurez besoin de la bibliothèque pika pour interagir avec RabbitMQ. Vous pouvez l'installer via pip:

    pip install pika
    

Producteur (Producer)

Créez un fichier nommé producer.py avec le contenu suivant:

import pika

def main():
    # Connexion à RabbitMQ
    connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
    channel = connection.channel()

    # Déclaration de la file d'attente
    channel.queue_declare(queue='hello')

    # Envoi de messages
    for i in range(10):
        message = f"Hello World {i}"
        channel.basic_publish(exchange='',
                              routing_key='hello',
                              body=message)
        print(f" [x] Sent {message}")

    # Fermeture de la connexion
    connection.close()

if __name__ == '__main__':
    main()

Consommateur (Consumer)

Créez un fichier nommé consumer.py avec le contenu suivant:

import pika

def callback(ch, method, properties, body):
    print(f" [x] Received {body}")

def main():
    # Connexion à RabbitMQ
    connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
    channel = connection.channel()

    # Déclaration de la file d'attente
    channel.queue_declare(queue='hello')

    # Configuration du consommateur
    channel.basic_consume(queue='hello',
                          on_message_callback=callback,
                          auto_ack=True)

    print(' [*] Waiting for messages. To exit press CTRL+C')
    channel.start_consuming()

if __name__ == '__main__':
    main()

Exécution

  1. Démarrer RabbitMQ: Assurez-vous que le serveur RabbitMQ est en cours d'exécution.

  2. Exécuter le consommateur: Ouvrez un terminal et exécutez le consommateur:

    python consumer.py
    
  3. Exécuter le producteur: Ouvrez un autre terminal et exécutez le producteur:

    python producer.py
    

Vous devriez voir les messages envoyés par le producteur être reçus et affichés par le consommateur.

Explication

  • Producer: Le producteur se connecte à RabbitMQ, déclare une file d'attente nommée hello, et envoie 10 messages à cette file d'attente.
  • Consumer: Le consommateur se connecte à RabbitMQ, déclare la même file d'attente hello, et commence à consommer les messages de cette file d'attente. Chaque message reçu est affiché dans la console.

Ces deux micro-services communiquent via RabbitMQ, ce qui permet une communication asynchrone et fiable entre eux.