Suche

über alle News und Events

 

Alle News

 

Erfahren Sie mehr über den Erfolgsfaktor...

Weiterlesen

Nordex Energy Customer Success Story: Effiziente...

Weiterlesen

Das klingt perfekt: Einfacher Nachrichten- und...

Weiterlesen

Auf der INTEGRATE 2020 läutet Jon Fancey,...

Weiterlesen

20 Jahre ist es her, dass Dr. Felix Weil, Dr.-Ing....

Weiterlesen

Zunächst sind wir glücklich darüber, dass bislang...

Weiterlesen

Homeoffice, Online-Konferenzen, ein...

Weiterlesen

Digitalisierung in einer virtuellen Welt:...

Weiterlesen

Corona stellt uns vor viele Herausforderungen....

Weiterlesen

Die Herausforderungen zur Integration...

Weiterlesen

Logic App: Verarbeiten von Azure Service Bus Nachrichten – wenn’s mal etwas länger dauert

Ein gängiges Szenario ist es, seine Azure Service Bus Nachrichten, egal ob Queue oder Topic, mittels einer Logic App abzuarbeiten. Es gibt die Möglichkeit einen Trigger zu verwenden, der die Nachricht sofort abschließt und somit aus der Queue oder dem Topic entfernt, noch bevor die Verarbeitung bzw. die Logic App durchlaufen ist (auto-complete).

Wenn wir die Nachricht erst abschließen wollen, nachdem die Verarbeitung durchlaufen ist, gibt es zusätzlich noch die Möglichkeit mittels Peek-Lock Trigger, der die Nachricht empfängt und wir sie mittels zusätzlicher Action abschließen müssen.

Hier gibt es aber eine Limitierung, die dieses Vorhaben erschweren kann: eine Service Bus Nachricht kann maximal 5 Minuten lang für weitere Empfänger gesperrt sein. Heißt, wenn die Logic App länger als 5 Minuten läuft (so wie oben), wird die Nachricht wieder freigegeben und wird vom Trigger oder anderen Empfängern erneut verarbeitet.

Wir müssen die Sperrdauer der Nachricht also irgendwie erneuern können, wenn unsere Logic App nicht garantiert unter den 5 Minuten bleibt. Das soll möglichst effizient passieren und so lange, wie die Logic App für die Verarbeitung eben benötigt. Erfreulicherweise stellt uns der Logic App Designer hierzu eine Möglichkeit bereit.

Zu Beginn der Logic App wir eine Variable (isCompleted) initialisieren, die wir erst nach der Verarbeitung auf true setzen. Danach teilt sich unsere Logic App in zwei Zweige auf.

Der linke Zweig führt die Verarbeitung durch und schließt die Nachricht am Ende ab oder verwirft sie im Fehlerfall.

Der rechte Zweig, der parallel zum linken ausgeführt wird, erhält die Sperrzeit aufrecht, solange der verarbeitende Zweig noch nicht fertig ist.

Der While-Block stellt sicher, dass die Nachrichtensperre bis zu 1 Stunde gehalten wird. Um länger oder kürzer zu halten, kann der Timeout entsprechend angepasst werden.

Der Delay sollte kürzer sein als die Dauer der Nachrichtensperre. Da in diesem Beispiel die Sperre (Lock-Duration) 30 Sekunden beträgt, reichen hier 25 Sekunden aus. Die Dauer kann und sollte an die tatsächliche Sperrzeit angepasst werden.

Dadurch geben wir der Logic App die Zeit, die sie zur Verarbeitung benötigt und das ohne uns darüber Sorgen machen zu müssen, dass sie es in den vom Service Bus vorgeschriebenen 5 Minuten bewerkstelligen kann.

Dieser quiTeq-Tipp kam von Martin, QUIBIQ Stuttgart.

 

Nehmen Sie gerne hier Kontakt zu uns auf

 

© QUIBIQ GmbH · Impressum · Datenschutz