簡體   English   中英

防止Azure在處理時停止工作

[英]Prevent Azure from Stopping Worker While Processing

這可能是一個簡單的問題,但我還沒有看到直接的答案。 假設我正在使用Azure輔助角色來執行某種長時間運行的任務,比如一個需要一個小時的任務。 現在說MS決定工作者角色需要對其進行一些維護,並嘗試將其關閉30分鍾。

有沒有辦法讓Azure等到該角色完成運行以進行維護? 我確實看到了OnStop方法,但似乎你只能在關閉之前讓事情延遲一段時間。

如果這是不可能的,那么你如何計划這個需要相當長時間並且不能分成更小塊的操作呢? 您是否只需回滾先前所做的任何更改,然后重試該任務?

您可以處理Stopping事件以延遲實例關閉(在正常關閉模式下)。 在崩潰的情況下,你無法真正阻止關機......

這是緩解的建議。 假設你的任務是隊列驅動的。 讓我們假裝你的消息看起來像PROCESSWIDGET|123

您在工作器實例中讀取隊列消息並開始處理。 您可以在整個過程中修改隊列消息,並記錄您的進度。 因此,在這個虛構的例子中,假設有4個步驟來完成長達一小時的任務,每個步驟需要15分鍾。 每個步驟完成后,您可以更新消息,附加檢查點狀態。 在完成第一個任務后,您將更新消息,現在它看起來像PROCESSWIDGET|123|STEP2

現在......出現問題,VM實例因某種原因而死亡。 隊列消息最終再次可見,另一個工作器實例讀取它,並看到附加下一步要執行的消息。 假設您已將中間文件存儲在Blob存儲(或其他一些持久存儲)中,您可以從中斷的地方繼續,而不是從頭開始重新處理。

有關UpdateMessage()方法的詳細信息,請參閱此MSDN頁面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM