Entkoppeln von Anwendungen mit Azure Service Bus Topics (Verwendung und Erstellung)

Messaging mit dem Service Bus ermöglicht die entkoppelte Kommunikation zwischen Anwendungen. Eine Applikation erzeugt Daten und möchte diese zur weiteren Verarbeitung verteilen. Dabei unterstützt der Azure Service Bus Queues und Topics.

Queues dienen dazu, Nachrichten an einen Empfänger weiterzuleiten. Wenn mehrere Konsumenten auf einer Queue lauschen, wird diese nur an einen von ihnen 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 Konsument 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 nach 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 mehrerer Nachrichten ist erkennbar, dass nicht alle Nachrichten in allen Topics enthalten sind. 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 Tipp kommt aus Stuttgart von Markus Burmeister, Solution Architect.