Dot-Net

連續 WebJobs 和 CancellationToken

  • December 30, 2015

我不了解取消令牌和網路作業背後的機制。

我知道我可以Microsoft.Azure.WebJobs.WebJobsShutdownWatcher().Token用來獲取令牌並token.IsCancellationRequested在 WebJobs 更新時做出反應。

場景: 連續作業,由服務匯流排消息觸發。該作業在我的數據層中呼叫了一個方法。此方法對 azure sql 數據庫上的不同表進行一些更新。此方法執行大約兩分鐘。

現在我將令牌傳遞給數據層,在那裡我會在不請求取消的情況下完成我的工作;否則我會結束我的更新。

現在的問題:

作業主機是否會等待我的方法,直到它完成然後停止?

我是否必須將“stopping_wait_time”設置為一個足夠高的值(預設值是多少?)以確保我的工作正確完成?

如果一條新消息被寫入服務匯流排隊列,儘管取消正在等待,這條消息是否會觸發一個新作業?

感謝您的任何澄清!

不,WebJob 執行時不會等待您的方法完成。您可以使用 WebJobShutdownWatcher 檢索的取消令牌僅允許通知您 Web 作業正在停止。它只允許您的程式碼有一點時間正確關閉。

連續網路作業的預設等待時間為 5 秒,但您可以按照您的建議使用“stopping_wait_time”設置來增加它。

就我所見,如果您的網路作業正在停止,它不再接受新的消息觸發器,直到它重新啟動。但是我在文件中沒有找到任何證實這一點的東西。

此處描述了 webjobs 的正常關閉:https ://github.com/projectkudu/kudu/wiki/Web-Jobs

希望這可以幫助,

朱利安

引用自:https://stackoverflow.com/questions/34529299