2015-09-25 75 views
2

我有一個網絡工作,從互聯網抓取文件並對其進行處理。我已將它綁定到每天午夜運行的調度程序。失敗後重新運行azure webjobs,出現異常N次

有時抓取文件進程失敗並拋出一個異常,導致web作業崩潰,直到第二天再次調度。

要停止應用程序崩潰,我有一個選擇是用try-catch塊封裝它並處理錯誤。但是我希望能夠在失敗後重新運行Web作業。

有沒有辦法讓我告訴天青調度程序在失敗後重新運行任務N次?

例如,我希望在最多5次失敗5分鐘後重新運行Web作業。我不想等待排程第二天開始。

回答

3

有沒有辦法告訴天青調度程序在失敗後重新運行任務N次?

Azure的計劃並沒有提供一種方法來驗證,如果「遠程」執行成功與否,但您可以使用「存儲隊列」 操作類型把消息到指定的隊列,並達到相同的網絡工作本身的行爲。 Azure Web Jobs SDK將處理傳入消息,如果引發異常並且隊列處理器可擴展(自1.1),則重試up to 5 times,因此您可以輕鬆實現指數重試策略或您需要的任何策略(通過擴展QueueProcessorQueueProcessorFactory類)。

步驟:

  1. 更新您的實際Web作業消耗隊列(通過使用[QueueTrigger("myqueue")]),並將其配置爲「連續運行」(在VS項目,蔚藍的Web應用程序)。
  2. 創建類型爲「存儲隊列」的Azure調度程序作業,這會將消息推送到提到的隊列中。

enter image description here

注:此選項需要標準層在你的Web應用程序(由於 「連續運行」)

+0

如果我不使用隊列什麼?我試圖做的是將我的Windows服務移動到azure webjobs而不使用任何消息隊列。到目前爲止,我已經能夠實現[http://stackoverflow.com/questions/1563191/c-sharp-cleanest-way-to-write-retry-logic](http://stackoverflow.com/questions/1563191/ c-sharp-cleananest-way-to-write-retry-logic), –

+0

順便說一句,看看https://msdn.microsoft.com/en-us/library/microsoft.practices.transientfaulthandling.aspx –

相關問題