Implémenter le pattern Fire & Forget avec des Logic Apps imbriquées

Oguzhan Yigit
Publié par Oguzhan
Catégorie : Azure
28/12/2018

Le pattern Fire & Forget

Lorsque vous invoquez des API (ou des processus externes), vous pouvez parfois ne pas vouloir ou ne pas avoir besoin d’attendre l’exécution de celle-ci. Vous voudrez donc juste lancer l’appel et reprendre la main sur votre thread principal. Ce pattern est le pattern « Fire & Forget ».

 

Implémentez le pattern avec des Logics Apps imbriquées

Azure Logic Apps possède un connecteur natif pour appeler une autre Logic App. La Logic App qui doit être imbriquée doit cependant respecter certains règles : elle doit être configurée avec un déclencheur Http et doit renvoyer une réponse Http.
Sur la capture ci-dessous, la Logic App peut être imbriquée car elle s’exécute via un déclencheur Http et renvoie bien une réponse Http.

fire and forget logic app imbriquee

 

Notez que le code 202 signifie « Acceptée » dans la langue des codes Http. Si une Logic App  appelle celle-ci, elle recevra une réponse 202 et continuera son exécution sans attendre la fin de la Logic App imbriquée. Le pattern est réellement très simple à implémenter, mais, dans le paragraphe suivant, je vous propose de le peaufiner.

 

Assurez que la fonction de resoumission fonctionne toujours

Maintenant que le pattern est en place, regardons comment se comporte la resoumission. Si vous exécutez une resoumission (via les API Azure ou via le portail) vous remarquerez que l’action « Réponse » est ignorée.

logic app action ignoree resoumission

 

La fonction de resoumission fonctionne ainsi. Parce-qu’il n’y a plus l’appelant à l’origine, l’action « response » est ignorée. Par défaut, une action d’une Logic App est exécutée si et seulement si la précédente se termine en « Succès ». Parce que l’action « Response accepted » est ignorée,  l’action suivante est ignorée. Et ainsi de suite jusqu’à la fin de flux. Sauf si c’est le comportement que vous souhaitez dans le cas d’une resoumission, vous devez vous assurer que les actions suivantes s’exécuteront bien, même dans un contexte de resoumission. C’est en réalité assez simple à configurer, en utilisant le panneau de paramétrage « Exécuter après ». Cochez simplement la case « is skipped » pour que l’action s’exécute même si la précédente est ignorée.

logic app imbriquee configure execute apres

 

Si vous resoumettez un run de la Logic App imbriquée, vous remarquerez cette fois que même si l’action « response » est ignorée, la suite du processus ne l’est pas.

logic app imbriquee correct