RabbitMQ zur verteilten Bearbeitung von Aufgaben und Entkopplung von Applikationsteilen
Kommentare

Exchange Types
Innerhalb von AMQP sind drei Standard-Exchange-Typen definiert, die näher betrachtet werden. Zusätzlich zu diesen drei Exchange-Typen könnten eigene Exchanges definiert werden, die beispielsweise

Exchange Types

Innerhalb von AMQP sind drei Standard-Exchange-Typen definiert, die näher betrachtet werden. Zusätzlich zu diesen drei Exchange-Typen könnten eigene Exchanges definiert werden, die beispielsweise anhand einer komplexen Regel für den Inhalt einer Nachricht (und nicht eines Routing Keys) eine Nachricht zustellt. In der Regel reichen allerdings die Möglichkeiten der drei Standard-Exchange-Typen aus, um eine Vielzahl an Anforderungen zu erfüllen.

Fanout Exchange

Mit der Fanout Exchange (Abb. 3) werden die eingehenden Nachrichten an alle verbundenen Queues gesendet. Die Nachrichten werden dabei nicht über Binding-Konfigurationen in bestimmte Queues sortiert.

Abb. 3: Fanout Exchange
Direct Exchange

Bei der Direct Exchange (Abb. 4) wird anhand eines vom Producer erstellten Routing Keys in einem Binding einer Queue zur Exchange entschieden, in welche Queue die Nachricht gesendet wird. Dies passiert genau dann, wenn der Routing-Key dem Binding-Key entspricht.

Abb. 4: Direct Exchange
Topic Exchange

Die Topic Exchange (Abb. 5) ist sehr ähnlich zur Direct Exchange mit dem Unterschied, dass die Routing und Binding Keys zusammengesetzt sein können. Dabei ist ein „.“ das Trennzeichen zwischen den Tupeln eines Keys. Zusätzlich können die Binding Keys auch spezielle Sammelzeichen (Wildcards), * und #, beinhalten, die dann ein Wort (*) oder mehrere Worte (#) vor oder nach einem Trenner ersetzen. Beispiele: *.usa.stocks, gold.*.stocks, #.stocks, gold.# .

Abb. 5: Topic Exchange
Plug-ins

RabbitMQ kann mittels Plug-ins erweitert werden, die neben einer einfacheren Wartung auch eine erweiterte Funktionalität bieten [7]. Zur Verwaltung der Plug-ins kann das rabbitmq-plugins-Konsolenprogramm verwendet werden. rabbitmq-plugins list listet alle registrierten Plug-ins auf, die dann mit dem Befehl rabbitmq-plugins enable/disable aktiviert bzw. deaktiviert werden können [8]. Für Einsteiger ist besonders das Management-Plug-in hilfreich, während die Shovel-Erweiterung für komplexere Aufgaben geeignet ist.

Management

Das Management-Plug-in (Abb. 6) bietet neben einem HTTP-API eine Webschnittstelle zur Verwaltung eines RabbitMQ-Brokers. Das Plug-in ist in der Standarddistribution von RabbitMQ enthalten und kann mittels rabbitmq-plugins enable rabbitmq_management aktiviert werden. Es verwendet den MochiWeb-Server (https://github.com/mochi/mochiweb), der Erlang in der Version >= R13B01 benötigt [9].

Abb. 6: Die Weboberfläche des RabbitMq-Management-Plug-ins zeigt einfache Statistiken an

Die Webschnittstelle bietet eine Verwaltung der Nutzer, Virtual-Hosts, Queues und Exchanges des aktuellen Brokers an. Zudem werden einfache Statistiken bereitgestellt, und die Inhalte einzelner Queues können bearbeitet werden. Neben dem Publizieren neuer Nachrichten können in der Queue befindliche Nachrichten angezeigt oder die Queue geleert werden. Hierbei ist problematisch, dass Nachrichten nicht formatiert dargestellt werden können, und dass die Auswahl, welche Nachrichten angezeigt werden sollen, bis auf die Anzahl nicht eingeschränkt werden kann.


Themen der folgenden Seiten:

  • RabbitMQ – Nutzungsbeispiele
  • Videoupload
  • Abstraktion von Schritten in einer Chain
  • Verteiltes Logging
  • Symfony2 und RabbitMQ
  • Ein Bundle vorgestellt – OldSound/RabbitMqBundle
  • Probleme und Lösungen mit PHP-Consumern
  • Generelle Probleme
  • Spezifische Probleme mit RabbitMqBundle
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -