Dot-Net
連續 WebJobs 和 CancellationToken
我不了解取消令牌和網路作業背後的機制。
我知道我可以
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
希望這可以幫助,
朱利安