Messaging Confusion: Pub / Sub vs Multicast vs Fan Out
Ich habe die Bewertung messaging-Technologien für mein Unternehmen, aber ich bin sehr verwirrt durch die konzeptionellen Unterschiede zwischen ein paar Begriffe:
Pub/Sub vs Multicast vs Fan-Out
Ich arbeite mit den folgenden Definitionen:
- Pub/Sub hat Publisher liefern Sie eine separate Kopie jeder Nachricht an
jeder Abonnent, was bedeutet, dass die Chance zu garantieren, Lieferung besteht - Fan-Out hat eine einzelne Warteschlange schieben zu hören
Kunden. - Multicast nur Spam-Mails, Daten und, wenn jemand zuhört
dann fein, wenn nicht, ist es egal. Keine Möglichkeit zu garantieren, eine client bekommt definitiv eine Botschaft.
Sind diese Definitionen richtig? Oder ist Pub/Sub-der Muster-und multicast -, direct -, fanout-etc. Möglichkeiten, um zu erreichen, das Muster?
Ich versuche zu arbeiten, die out-of-the-box-RabbitMQ-Definitionen in unsere Architektur, aber ich bin nur im Kreise herum in dem moment beim schreiben der Spezifikationen für unsere app.
Könnte bitte jemand mir raten, ob ich Recht habe?
InformationsquelleAutor der Frage ghostJago | 2011-11-24
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin verwirrt durch die Wahl von drei Bedingungen zu vergleichen. Innerhalb von RabbitMQ, Fanout und Direkten Austausch Arten. Pub-Sub ist ein generisches messaging-Muster, aber nicht einen Austausch geben. Und Sie hat nicht einmal erwähnt, die 3. und wichtigste Austausch geben, nämlich das Thema. In der Tat, die Sie umsetzen können Fanout-Verhalten auf ein Thema exchange nur durch die Deklaration mehrere Warteschlangen mit der gleichen verbindlichen Schlüssel. Und Sie können festlegen, Direkte Verhalten auf ein Thema exchange durch die Deklaration einer Warteschlange mit
*
als wildcard-binding-Taste.Pub-Sub wird allgemein verstanden als ein Muster, in dem eine Anwendung veröffentlicht Nachrichten, die konsumiert werden, von einigen Abonnenten.
Mit RabbitMQ/AMQP es ist wichtig, daran zu erinnern, die Nachrichten werden immer veröffentlicht, um den Austausch. Dann tauscht route zu Warteschlangen. Und queues senden von Nachrichten an Abonnenten. Das Verhalten der exchange ist wichtig. Im Thema Austausch der routing-key aus dem Verlag ist abgestimmt, bis zu der verbindliche Schlüssel vom Abonnenten aus, um die routing-Entscheidung. Binding keys können wildcard-Muster, die weitere Einflüsse der routing-Entscheidung. Komplizierter routing kann basiert auf der Inhalt der Nachrichten-Kopfzeilen mit einem Header exchange Typ
RabbitMQ keine Garantie für die Zustellung von Nachrichten, aber Sie können die Zustellung durch die Wahl der richtigen Optionen(delivery mode = 2 für persistente Nachrichten), und erklären-Börsen und Warteschlangen im Voraus, der Ihre Anwendung ausgeführt wird, so dass Nachrichten nicht verworfen werden.
InformationsquelleAutor der Antwort Michael Dillon
Ihre Definitionen sind ziemlich viel richtig. Beachten Sie, dass die Zustellung ist nicht beschränkt auf pub/sub-only, und es kann getan werden, mit der Anzahl der Verzweigungen zu. Und ja, der pub/sub ist eine sehr einfache Beschreibung, die realisiert werden können, die mit spezifischen Methoden wie fanout -, direkt-und so weiter.
Gibt es mehr messaging-Muster, die Sie nützlich finden könnten. Haben Sie einen Blick auf Enterprise Integration Patterns für mehr details.
InformationsquelleAutor der Antwort Brian Kelly
Vom elektronischen Austausch der Sicht der Begriff "Multicast" bedeutet "die Nachricht wird auf den Draht gesetzt einmal," und alle client-Anwendungen, die hören können, Lesen Sie die Nachricht aus der "wire". Jede Lösung, macht N Kopien der Nachricht für den N-clients ist nicht multicast. Neben der Untersuchung des source-code kann man auch mit einem "sniffer", um zu bestimmen, wie viele Kopien der Nachricht gesendet wird über den Draht aus dem messaging-system. Und ja, multicast-Nachrichten sind eine form der UDP-Protokoll-Nachricht. Siehe: http://en.wikipedia.org/wiki/Multicast für eine Allgemeine Beschreibung. Vor etwa zehn Jahren, haben wir das messaging-system von TIBCO unterstützt multicast. Siehe: https://docs.tibco.com/pub/ems_openvms_c_client/8.0.0-june-2013/docs/html/tib_ems_users_guide/wwhelp/wwhimpl/common/html/wwhelp.htm#context=tib_ems_users_guide&file=EMS.5.091.htm
InformationsquelleAutor der Antwort California-OldGuy