Ich habe mich gefragt, was der Unterschied zwischen einer JMS-Warteschlange und einem JMS-Thema ist.
ActiveMQ-Seite sagt
Themen
In JMS implementiert ein Thema die Veröffentlichungs- und Abonnementsemantik . Wenn Sie eine Nachricht veröffentlichen, geht sie an alle interessierten Abonnenten. Daher erhalten null bis viele Abonnenten eine Kopie der Nachricht. Nur Abonnenten, die zum Zeitpunkt des Empfangs der Nachricht durch den Broker ein aktives Abonnement hatten, erhalten eine Kopie der Nachricht.
Warteschlangen
Eine JMS-Warteschlange implementiert die Semantik des Lastenausgleichs . Eine einzelne Nachricht wird von genau einem Verbraucher empfangen. Wenn zum Zeitpunkt des Sendens der Nachricht keine Verbraucher verfügbar sind, wird diese aufbewahrt, bis ein Verbraucher verfügbar ist, der die Nachricht verarbeiten kann. Wenn ein Verbraucher eine Nachricht empfängt und diese vor dem Schließen nicht bestätigt, wird die Nachricht an einen anderen Verbraucher erneut zugestellt. Eine Warteschlange kann viele Verbraucher mit Nachrichten haben ausgewogen Last auf die verfügbaren Verbraucher.
Ich möchte "etwas" haben, das eine Kopie der Nachricht an jeden Abonnenten in derselben Reihenfolge sendet, in der die Nachricht vom ActiveMQ-Broker empfangen wurde.
Irgendwelche Gedanken?
Die Themen beziehen sich auf das Publisher-Subscriber-Modell, die Warteschlangen auf Punkt-zu-Punkt.
quelle
Ein JMS-Thema ist die Art des Ziels in einem 1-zu-viele-Verteilungsmodell. Die gleiche veröffentlichte Nachricht wird von allen konsumierenden Abonnenten empfangen . Sie können dies auch als "Broadcast" -Modell bezeichnen. Sie können sich ein Thema als Äquivalent eines Themas in einem Observer-Entwurfsmuster vorstellen für verteiltes Rechnen vorstellen. Einige JMS-Anbieter entscheiden sich effizient dafür, dies als UDP anstelle von TCP zu implementieren. Bei Themen lautet die Nachrichtenübermittlung "Feuer und Vergessen". Wenn niemand zuhört, verschwindet die Nachricht einfach. Wenn Sie dies nicht möchten, können Sie dauerhafte Abonnements verwenden.
Eine JMS-Warteschlange ist ein 1: 1-Ziel für Nachrichten. Die Nachricht wird nur von einem der konsumierenden Empfänger empfangen (bitte beachten Sie: Durch die konsequente Verwendung von Abonnenten für Themen-Clients und Empfängern für Warteschlangen-Clients wird Verwirrung vermieden). An eine Warteschlange gesendete Nachrichten werden auf der Festplatte oder im Speicher gespeichert, bis jemand sie aufnimmt oder sie abläuft. Warteschlangen (und dauerhafte Abonnements) benötigen also eine aktive Speicherverwaltung. Sie müssen über langsame Verbraucher nachdenken.
In den meisten Umgebungen sind Themen die bessere Wahl, da Sie jederzeit zusätzliche Komponenten hinzufügen können, ohne die Architektur ändern zu müssen. Hinzugefügte Komponenten können Überwachung, Protokollierung, Analyse usw. sein. Zu Beginn des Projekts wissen Sie nie, wie die Anforderungen in 1 Jahr, 5 Jahren, 10 Jahren aussehen werden. Veränderung ist unvermeidlich, nimm sie an :-)
quelle
So einfach ist das:
quelle
notificationProcessor
(sendet eine Benachrichtigung an das Poster),karmaProcessor
(gibt dem Liker und dem Poster Karma),feedProcessor
(bewegt sich in den Feeds der Leute nach oben). Alles natürlich asynchron.Informationen zur Auftragserhaltung finden Sie auf dieser ActiveMQ-Seite . Kurz gesagt: Die Bestellung bleibt für einzelne Verbraucher erhalten, bei mehreren Verbrauchern ist die Reihenfolge der Lieferung jedoch nicht garantiert.
quelle
Warteschlangen
Vorteile
Nachteile
Themen
Vorteile
Nachteile
quelle
Wenn Sie N Verbraucher haben, dann:
JMS-Themen liefern Nachrichten an N von N JMS-Warteschlangen liefern Nachrichten an 1 von N.
Sie sagten, Sie möchten "ein" Ding "haben, das eine Kopie der Nachricht an jeden Abonnenten in derselben Reihenfolge sendet, in der die Nachricht vom ActiveMQ-Broker empfangen wurde."
Sie möchten also ein Thema verwenden, damit alle N Abonnenten eine Kopie der Nachricht erhalten.
quelle
THEMA :: Thema ist eins zu viele Kommunikation ... (Mehrpunkt oder veröffentlichen / abonnieren) EX: - Stellen Sie sich vor, ein Verlag veröffentlicht den Film im youtub, dann erhalten alle Abonnenten eine Benachrichtigung .... QUEVE :: queve ist eins zu eins -eine Kommunikation ... Beispiel: -Wenn Sie eine Aufladeanforderung veröffentlichen, wird diese nur an einen Q-Empfänger gesendet. Denken Sie immer daran, dass bei einer Anfrage an alle Q-Empfänger mehrere Aufladungen durchgeführt wurden, während Sie eine Analyse entwickelten, die für eine Anwendung geeignet ist
quelle
Die Warteschlange ist ein von JMS verwaltetes Objekt, das zum Speichern von Nachrichten verwendet wird, die darauf warten, dass Abonnenten sie verwenden. Wenn alle Abonnenten die Nachricht konsumiert haben, wird die Nachricht aus der Warteschlange entfernt.
Das Thema ist, dass alle Abonnenten eines Themas dieselbe Nachricht erhalten, wenn die Nachricht veröffentlicht wird.
quelle