當Webjobs通過QueueTrigger從Azure存儲上的隊列中獲取消息時,它會租用消息(使其不可見)。如果(webjob的)觸發功能花費很長時間來處理消息,這個租約是否自動擴展?或者我應該在功能中處理?Webjobs是否會自動續訂Azure隊列消息上的租約?
在這個環節Windows Azure Queues: Improved Leases, Progress Tracking, and Scheduling of Future Work,作者指出,「上的消息租約可以通過做原始出隊的工人進行擴展,以便它可以繼續處理消息」
注:我嘗試了一個webjob(帶有QueueTrigger),等待20分鐘。
//Write Log
Thread.Sleep(1200000);
//Write Log
它成功完成。在此期間,沒有其他webjob實例嘗試嘗試相同的隊列項目(它並未變得可見)。因此,似乎存在租賃的自動更新機制。無論如何,我正在等待微軟員工或官方鏈接(msdn,azure,...)的答案。
該問題的答案之一屬於我。這意味着我看到了這個問題,顯然是另一個答案。而且我也閱讀了很久以前給出的鏈接並做了這個例子。我找不到那些暗示「你的租約自動延期,每次10分鐘」的內容。也許我想念一些東西。你能指定你得出這個結果的段落嗎? –
@NuriTasdemir對不起,我沒有看海報的名字。你是對的,文章沒有提到時間的延長和時間。所以,我查看了GitHub上的源代碼(https://github.com/Azure/azure-webjobs-sdk/blob/master/src/Microsoft.Azure.WebJobs.Host/Queues/Listeners/QueueListener.cs)。 10分鐘的窗口在第138行被硬編碼。然後,這個值被傳遞給一些方法調用,並在250線上的計時器中再次使用,該計時器將更新消息以重置可見性超時。 – SvenAelterman
@NuriTasdemir這有點複雜,因爲它會在中途開始重置可見性超時。所以,在處理時間的第一個5分鐘後,它會延長10分鐘等等。通過'LinearSpeedupStrategy'等,有'UpdateQueueMessageVisibilityCommand'的使用。但是底線是,代表WebJob的時間延長爲10每次分鐘。 – SvenAelterman