[英]Azure Queue Storage triggered without removing message
在決定刪除消息之前,如何在“功能應用程序”中保留消息?
當我使用c#構建控制台應用程序時,可以決定何時刪除讀取的消息:
queue.DeleteMessage(msg);
我可以通過以下過程自動讀取隊列: functions-create-storage-queue-triggered-function 。
問題是,就像Azure所說的那樣:
- 返回到Storage Explorer中,單擊“刷新”並確認消息已被處理並且不再在隊列中。
在這種情況下,完成該功能后,我無法自己刪除該消息。
我試圖Throw new Exception("failed");
模擬失敗的功能,但是仍然刪除了該消息。
我希望將此消息保留在隊列中,直到我決定刪除它為止(在函數末尾)。
我試圖
Throw new Exception("failed");
模擬失敗的功能,但是仍然刪除了該消息。
該消息不會被刪除,無論visibility-timeout
(以秒為單位),它都將變為不visibility-timeout
。 您正在WebJobs SDK的上下文中運行代碼,這就是為什么您.DeleteMessage()
調用.DeleteMessage()
的原因。 您只收到消息,而不是隊列客戶端。
如果您的功能成功完成,則功能運行時(WebJobs SDK)將刪除該消息。
參考:
https://stackoverflow.com/a/40011705/4148708
https://github.com/Azure/azure-webjobs-sdk/issues/1040
編輯:出隊計數也可以咬人。 如果消息的dequeueCount
屬性達到5,WebJobs SDK會將消息移至中毒隊列( QueueName-poison
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.