Azure Service Bus - Abonnenten können unabhängig voneinander ein Abonnement abonnieren und dieselbe Nachricht teilen?

8

Ich bin neu in Azure Service Bus und habe erfolgreiche Jobs zum Erstellen eines Themas und eine separate Subskribentenanwendung zum Empfangen der Nachricht erstellt.

Basierend auf diesem Artikel zitiere ich: "Einem Thema können bis zu 2.000 Abonnements zugeordnet sein, von denen jedes unabhängige Kopien aller an das Thema gesendeten Nachrichten erhält. Ein oder mehrere Abonnenten können unabhängig voneinander ein Abonnement abonnieren und konkurrieren Nachrichten von ihm. "

Ссылка

Was mich interessiert, ist, dies für mehrere Anwendungen zu erweitern, um das gleiche Thema unabhängig zu abonnieren, aber nicht für sie.

Mein aktuelles Postfach enthält einen Absender und zwei separate Anwendungen, die dasselbe Thema abonniert haben. Das Verhalten, das ich sehe, ist, dass, wenn ich eine Nachricht vom Absender einsende, eine der zwei laufenden abonnierenden Anwendungen es erhalten wird; aber nicht der andere.

Meine Frage ist, ob mehrere unabhängige Anwendungen dieselbe Themennachricht erhalten können. Jeder Rat würde sehr geschätzt werden!

    
Heretix 18.01.2014, 02:36
quelle

2 Antworten

18

Wenn Sie ein Abonnement für ein Thema erstellen, hat es einen spezifischen Abonnementnamen. Jeder Verbraucher, der daraufhin Nachrichten für diesen Abonnementnamen anfordert, wird um Nachrichten für dieses Abonnement konkurrieren. Wenn Sie möchten, dass unabhängige Anwendungen eine Kopie der an ein Thema gesendeten Nachricht erhalten, müssen sie jeweils ein eigenes Abonnement für das Thema erstellen. Sie können fast jede Subskription als eine Warteschlange betrachten, um sich selbst durch das Thema zu füttern.

Das Beispiel, das ich geben werde, ist von einem College. Das Thema ist "Neuer Student" und jede Abteilung innerhalb der Hochschule möchte eine Kopie einer Nachricht für einen neuen Schüler erhalten. Somit hätte jede Abteilung ein eigenes Abonnement. Es würde "Musik", "Billings", "Wissenschaft", "Math" -Abonnements, etc. geben. Jeder von ihnen abonniert das Thema "Neuer Student". Auf diese Weise erhält jede Abteilung eine Kopie der neuen Schülermitteilung oder kann sogar nach Dingen filtern, die ihnen wichtig sind. Wenn die Abteilung bei der Verarbeitung zurückbleibt, können sie mehr Instanzen des Prozessors mit dem Namen ihres Abonnements hochfahren, wodurch ihr Durchsatz in der Theorie erhöht wird, da dann mehr Konsumenten um die Nachrichten in ihrem Abonnement konkurrieren.

In Ihrem Beispiel müsste also jede Anwendung entweder ihr eigenes Abonnement erstellen oder ein einmaliges Abonnement erhalten, mit dem sie beim Start beginnen kann. Beachten Sie Folgendes: Wenn Sie die Laufzeit der Anwendung über die Lebensdauer eines Abonnements entscheiden lassen (dh Sie erstellen ein Abonnement beim Start der App und zerstören es, wenn die App geschlossen wird), müssen Sie beachten, dass Nachrichten ohne aktive Abonnements an das Thema gesendet werden wird einfach verloren sein. Sie können jedoch ein catch all-Abonnement erstellen, das nur Nachrichten empfängt, die nicht an ein anderes Abonnement übermittelt werden. Es hängt wirklich davon ab, was Sie erreichen möchten.

    
MikeWo 18.01.2014 03:37
quelle
0

Was Sie suchen, ist nicht Service Bus, sondern Event Hub. Event Hub arbeitet genau so, wie Sie es beschreiben und auf den Sie auch mit AMQP zugreifen können.

    
Gábor Paller 13.03.2018 19:08
quelle

Tags und Links