Aller au contenu

Files d'Attente - Communication Asynchrone avec les Files de Messages

Les files de messages (MQ) sont une forme de communication asynchrone utilisée pour permettre aux systèmes distribués de communiquer et de traiter les tâches efficacement. Les files aident à découpler les composants, améliorent la scalabilité et renforcent la tolérance aux pannes.


Producteur

Envoie des messages à la file d’attente.

Consommateur

Reçoit et traite les messages de la file d’attente.

Broker

Gère la file d’attente et assure la livraison des messages aux consommateurs.

Message

Les données envoyées du producteur au consommateur.


  • Traitement Asynchrone : Déléguer les tâches longues aux travailleurs en arrière-plan.
  • Découplage : Séparer les composants pour qu’ils puissent évoluer indépendamment.
  • Nivellement de Charge : Lisser les pics de trafic en mettant en mémoire tampon les requêtes.
  • Tolérance aux Pannes : Assurer que les messages ne sont pas perdus si un composant tombe en panne.

# Producteur
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='', routing_key='hello', body='Bonjour, RabbitMQ !')
print(" [x] Envoyé 'Bonjour, RabbitMQ!'")
connection.close()
# Consommateur
import pika
def callback(ch, method, properties, body):
print(f" [x] Reçu {body}")
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
print(' [*] En attente de messages. Pour quitter, appuyez sur CTRL+C')
channel.start_consuming()


Files d’Attente pour Développeurs Expérimentés

Section intitulée « Files d’Attente pour Développeurs Expérimentés »

AvantagesInconvénients
Découple les composants et améliore la scalabilitéAjoute de la complexité au système
Renforce la tolérance aux pannes et la fiabilitéNécessite une infrastructure supplémentaire
Permet un traitement asynchronePeut introduire de la latence

  • Configurez un système de file d’attente simple comme RabbitMQ ou Redis.
  • Expérimentez avec la production et la consommation de messages dans votre langage préféré.