2017-04-07 64 views
0

我有一個邏輯應用程序調用功能應用程序。函數應用程序可能會失敗,如果有,我希望邏輯應用程序執行重試。但我不知道將故障傳回邏輯應用程序的正確方法是什麼。我的功能應用程序簽名是如何讓功能應用程序告訴邏輯應用程序失敗

public static async Task Run(...) 

拋出異常是唯一的選擇嗎?我認爲還有更好的方法,因爲即使函數應用程序失敗,我也希望邏輯應用程序恢復出我的輸出參數。

回答

1

邏輯應用程序通過webhook調用你的函數應用程序,所以通過拋出異常你發送一個錯誤http響應回邏輯應用程序。

您可以在檢測到函數錯誤時自行創建並返回錯誤響應。這裏是關於邏輯應用程序錯誤處理的一些文檔,它可能有你想要的參數處理的信息:https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-exception-handling

+0

只是迴應 - 如果Azure函數返回一些錯誤響應(錯誤請求,4xx無論)邏輯應用程序將知道它失敗了,從函數返回上下文,並繼續工作流(失敗,調用一些補償操作等) – jeffhollan

+0

道歉 - 我沒有問正確的問題。這個特定的功能是直接觸發的,而不是通過邏輯應用程序。就此而言,如何控制「重試失敗」邏輯?或者,功能應用程序不可行? –

+0

如果您希望通過函數對失敗進行重試,最佳選擇是使用隊列觸發函數,請參閱:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-隊列#handling-poison-queue-messages –

相關問題