Übersicht über Nachrichtenwarteschlangen

Das Message Queue Framework (MQF) ist ein System, das einem Modul das Veröffentlichen von Nachrichten in Warteschlangen ermöglicht. Außerdem werden die Verbraucher definiert, die die Nachrichten asynchron erhalten. Der MQF verwendet RabbitMQ als Messaging-Broker, der eine skalierbare Plattform für den Versand und Empfang von Nachrichten bietet. Sie enthält auch einen Mechanismus zum Speichern nicht zugestellter Nachrichten. RabbitMQ basiert auf der Spezifikation des Advanced Message Queuing Protocol (AMQP) 0.9.1.

Die folgende Abbildung zeigt das Message Queue-Framework:

Message Queue-Framework

  • Ein Publisher ist eine Komponente, die Nachrichten an einen Exchange sendet. Er weiß, in welchem Exchange er veröffentlicht werden soll, und kennt das Format der gesendeten Nachrichten.

  • Ein Exchange empfängt Nachrichten von Herausgebern und sendet sie an Warteschlangen. Obwohl RabbitMQ mehrere Arten von Austauschen unterstützt, verwendet Commerce nur Themenaustausche. Ein Thema enthält einen Routing-Schlüssel, der Textzeichenfolgen enthält, die durch Punkte getrennt sind. Das Format für einen Themennamen ist string1.string2: z. B. customer.created oder customer.sent.email.

    Der Broker ermöglicht die Verwendung von Platzhaltern beim Festlegen von Regeln für die Weiterleitung von Nachrichten. Sie können ein Sternchen (*) verwenden, um eine Zeichenfolge oder ein Rautenzeichen (#), um 0 oder mehr Zeichenfolgen zu ersetzen. customer.* würden beispielsweise nach customer.create und customer.delete filtern, jedoch nicht nach customer.sent.email. customer.# würden jedoch nach customer.create, customer.delete und customer.sent.email filtern.

  • Eine Warteschlange ist ein Puffer, der Nachrichten speichert.

  • Ein Verbraucher erhält Nachrichten. Es weiß, welche Warteschlange verbraucht werden soll. Er kann Prozessoren der Nachricht einer bestimmten Warteschlange zuordnen.

Ein einfaches Meldungswarteschlangen-System kann auch ohne RabbitMQ eingerichtet werden. In diesem System speichert ein MySQL-Adapter Nachrichten in der Datenbank. Drei Datenbanktabellen (queue, queue_message und queue_message_status) verwalten die Arbeitslast für die Nachrichtenwarteschlange. Cron-Aufträge stellen sicher, dass die Verbraucher Nachrichten empfangen können. Diese Lösung ist nicht sehr skalierbar. RabbitMQ sollte nach Möglichkeit verwendet werden.

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c