Queues dienen dazu, Nachrichten an einen Empfänger weiterzuleiten. Wenn mehrere Konsumenten auf einer Queue lauschen, wird diese nur an einem von diesen weitergeleitet. Topics dagegen ermöglichen die Verteilung an mehrere Abnehmer.
Ein Topic erstellen
Zum Erstellen eines Topics muss im Service Bus das Blade Topic gewählt werden und mit „+ Topic“ kann ein Neues erstellt werden.
Auf der nächsten Seite einen Namen, sowie die passenden Einstellungen wählen.
Eine Subscription erstellen
Nach dem Anlegen eines Topics kann man in der Übersicht über „+ Subscription“ eine neue Subscription anlegen.
Auch hier wieder den Namen und die entsprechenden Einstellungen festlegen.
Pro Konsumenten sollte eine eigene Subscription erstellt werden. Wenn sich mehrere Konsumenten ein Abonnement teilen, verhalten sich diese wie eine Queue.
Subscription-Filter erstellen
Nachdem alle Subscriptions erstellt wurden, können diese mit einem Filter versehen werden. Wird kein eigener Filter erstellt, erhalten Abnehmer dieses Abos alle Nachrichten, die das Topic erreichen.
Einen Filter kann man innerhalb der Subscription erstellen. Dieser basiert auf Nachrichten- bzw. Custom-Properties.
Hinweis: Es ist nicht möglich auf Nachrichteninhalten zu filtern. Wenn man Werte aus der Nachricht im Subscription-Filter benötigt, muss man diese als Custom Properties an die Nachricht hängen.
Microsoft Dokumentation zu Subscription Filtern: Azure Service Bus-Themenfilter - Azure Service Bus | Microsoft Learn (https://learn.microsoft.com/de-de/azure/service-bus-messaging/topic-filters)
Wenn nun eine Nachricht auf das Topic geschickt wird, wird diese an alle Subscriber mit den zutreffenden Filter-Bedingungen verteilt.
Logic App als Konsument einrichten
Ein möglicher Abnehmer für Nachrichten aus Service Bus Topics kann eine Logic App sein. Es gibt dafür passende Trigger, welche beim Empfang einer Nachricht triggern.
Im Trigger wählt man das entsprechende Topic sowie die Subscription aus.
Achtung: Nur ein Konsument pro Subscription, da sich ansonsten mehrere Konsumenten desselben Abonnements wie Queues verhalten und nur einer von diesen die Nachricht erhält.
Nachricht auf das Topic schicken
In diesem Beispiel möchten wir auf Daten filtern. Da dies nicht direkt möglich ist, hängen wir diese als Custom Properties an.
Das Beispiel enthält drei Subscriber auf dem Topic. Nach dem Versand mehrere Nachrichten ist erkennbar, nicht alle Nachrichten sind in allen Topics enthalten. Die Filter haben diese korrekt verteilt.
Nachrichten empfangen
In der Konsumenten Logic App ist erkennbar, dass die korrekte Subscription erfasst und entsprechende Nachrichten abgeholt wurden.
Dieser quiTq-Tipp kommt aus Stuttgart von Markus Burmeister, Solution Architect.