Message Queueing
🧠
Hier Konzeptist
ein umfassender Wiki-Artikel zum Thema Message QueuesQueuing, mit besonderem Fokus auf RabbitMQ als Praxisbeispiel:
📬 Message Queuing – Grundlagen und Praxis mit RabbitMQ
1. Einführung: Was ist Message Queuing?
Message Queuing (Nachrichtenwarteschlangen)MQ) ist ein Kommunikationsparadigma, das es ermöglichenglicht, es, AufgabenNachrichten asynchron abzuarbeiten.zwischen Einverschiedenen „Producer“Komponenten stellteines eineSystems Nachrichtauszutauschen. (Job)Dabei werden Nachrichten in dieeiner Queue, ein „Consumer“Warteschlange (Worker)Queue) zwischengespeichert, bis sie von einem Empfänger (Consumer) verarbeitet siewerden. später.Dieses Modell fördert die Entkopplung von Systemkomponenten und erhöht die Skalierbarkeit und Fehlertoleranz von Anwendungen.
Typische
2. Vorteile von Message Queuing
Bull / BullMQ (für Node.js mit Redis)-
LaravelAsynchroneQueuesKommunikation: Sender und Empfänger müssen nicht gleichzeitig aktiv sein. -
RabbitMQ,Entkopplung:KafkaKomponenten können unabhängig voneinander entwickelt und betrieben werden. -
Lastverteilung: Nachrichten können auf mehrere Empfänger verteilt werden, um die Verarbeitungslast zu verteilen.
-
Fehlertoleranz: Nachrichten bleiben in der Queue, bis sie erfolgreich verarbeitet wurden, was die Zuverlässigkeit erhöht.
-
Skalierbarkeit: Einfaches Hinzufügen weiterer Empfänger zur Verarbeitung steigender Nachrichtenmengen.
Anwendungsfälle
-
Auftragsverarbeitung: Bestellungen werden in einer Queue gespeichert und von einem Backend-System verarbeitet.
-
E-Mail-Versand: E-Mails werden als Nachrichten in eine Queue gestellt und von einem separaten Dienst versendet.
-
Log-Verarbeitung: Anwendungslogs werden gesammelt und asynchron analysiert.
-
Microservices-Kommunikation: Services kommunizieren über Nachrichten, um lose gekoppelt zu bleiben.
RabbitMQ – Ein Praxisbeispiel
RabbitMQ ist ein weit verbreiteter, quelloffener Message Broker, der das Advanced Message Queuing Protocol (gröAMQP) implementiert. Es ermöglicht das Senden, Empfangen und Weiterleiten von Nachrichten zwischen Anwendungen oder Diensten.
Grundkonzepte
-
Producer: Erzeugt und sendet Nachrichten.
-
Exchange: Empfängt Nachrichten vom Producer und leitet sie gemäß
ereSysteme)bestimmter Regeln weiter. -
Queue: Speichert Nachrichten, bis sie vom Consumer abgeholt werden.
-
Consumer: Empfängt und verarbeitet Nachrichten aus der Queue.
🎯 Wofür geeignet?Exchange-Typen
-
HintergrundverarbeitungDirect: Leitet Nachrichten basierend auf einer exakten Routing-Key-Übereinstimmung weiter. -
LastverteilungFanout: Leitet Nachrichten an alle gebundenen Queues weiter, unabhängig vom Routing Key. -
Retry-MechanismenTopic:beiLeitetFehlernNachrichten basierend auf Musterabgleich des Routing Keys weiter. -
Headers: Leitet Nachrichten basierend auf Header-Attributen weiter.
Implementierung mit RabbitMQ
📦 Im CMS-KontextInstallation
EinRabbitMQ Beitragkann wirdlokal erstelltinstalliert →oder landetüber Docker bereitgestellt werden. Eine einfache Möglichkeit ist die Verwendung des offiziellen Docker-Images:
docker run -d --hostname my-rabbit --name some-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3-management
Dies startet RabbitMQ mit dem Management-Plugin, das über http://localhost:15672 erreichbar ist.
Beispiel: Nachricht senden und empfangen mit Python
Verwendung der pika-Bibliothek:
Producer (Sender):
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('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()
Consumer (Empfänger):
import pika
def callback(ch, method, properties, body):
print(f" [x] Received {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(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
Diese einfachen Beispiele zeigen, wie Nachrichten in einereine Queue gesendet und von dort empfangen werden können.
Zusammenfassung
Message Queuing ist ein leistungsfähiges Muster zur Moderationasynchronen oderKommunikation Bildverkleinerung.in Derverteilten NutzerSystemen. siehtRabbitMQ sofortbietet „Deineine Beitragrobuste wirdund geprüft“,flexible aberImplementierung diedieses eigentlicheMusters Arbeitund passiertist imin Hintergrund.vielen Szenarien einsetzbar, von einfachen Anwendungen bis hin zu komplexen Microservices-Architekturen.
Weiterführende Ressourcen: