RabbitMQ | Der schnelle Messaging Broker vorgestellt


Bei der Nachrichtenübermittlung gibt es vier Stationen:

  • Producer: erzeugt Nachrichten
  • Exchange: leitet Nachrichten weiter
  • Queue: lagert Nachrichten
  • Consumer: verarbeitet die Nachricht

Der Producer veröffentlicht eine Nachricht, sendet diese aber nicht direkt an den Consumer, sondern übergibt sie an die Exchange. Diese Position ist dafür verantwortlich, die Nachrichten auf verschiedene Warteschlangen zu verteilen. Aus denen bedienen sich Consumer mit Nachrichten. Sowohl die Exchange als auch die Queues sind Teil von RabbitMQ und werden von der Software verwaltet. Damit Nachrichten den richtigen Adressaten erreichen, verwendet man Routing Keys. Der Sender gibt der Nachricht einen Routing Key mit, der wie eine Adresse funktioniert. Die Exchange erkennt anhand des Schlüssels, wie die Nachricht geroutet werden muss.

Zwischen Exchange und Queue besteht ein sogenanntes Binding. Über dieses ist jede einzelne Warteschlange mit dem Exchange verbunden. Das Binding definiert zudem, nach welchen Kriterien eine Nachricht weitergeleitet werden soll. Es gibt vier verschiedene Grundarten, wie Nachrichten verteilt werden können.

Direct Exchange

Eine Direct Exchange ist eine direkte Verbindung zwischen Sender und Empfänger. Der Producer stattet die Nachricht mit einem Routing Key aus, der einem entsprechenden Binding Key der Queue entspricht. Das bedeutet, dass auch nur eine Queue in Frage kommt, an der wiederum in der Regel nur ein Consumer hängt.

Topic Exchange

Dieser Exchange-Typ erweitert das Konzept der Direct Exchange. Statt nur eines Kriteriums (Routing Key = Binding Key) können mehrere Queues angesprochen werden. Dies funktioniert über Platzhalter. So können bestimmte Queues bzw. Binding Keys akzeptiert werden, andere bleiben aber ausgeschlossen.

Fanout Exchange

Die Fanout Exchange ist ein Broadcast. Man verteilt dabei eine Nachricht an alle verfügbaren Queues. Es findet keine Sortierung statt. Ein Routing Key wird ignoriert.

Header Exchange

Auch bei Header Exchanges ignoriert das System einen Routing Key. Stattdessen spielt der Header der Nachricht eine wichtige Rolle. In diesem findet die Exchange die Attribute, um die korrekten Queues anzusteuern. Insofern funktioniert eine Header Exchange analog zu Topic Exchanges, da auch in diesem Fall mehrere Queues, aber nicht alle angesprochen werden können.

Consumer, also die empfangende Software, registrieren sich auf bestimmte Queues und beziehen von diesen die Nachrichten. Deshalb ist auch pro Queue nur ein Consumer vorgesehen. Sollten mehrere Consumer Nachrichten aus einer Warteschlange ziehen, kann die korrekte Verteilung nicht garantiert werden. Optional entscheidet man für jede Nachricht, ob der Empfänger den Erhalt quittieren muss oder ob dies nicht notwendig ist.



Source link

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.