簡體   English   中英

觸發Azure隊列存儲而不刪除消息

[英]Azure Queue Storage triggered without removing message

在決定刪除消息之前,如何在“功能應用程序”中保留消息?

當我使用c#構建控制台應用程序時,可以決定何時刪除讀取的消息:

queue.DeleteMessage(msg);

我可以通過以下過程自動讀取隊列: functions-create-storage-queue-triggered-function

問題是,就像Azure所說的那樣:

  1. 返回到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 )。

看到更多
https://github.com/Microsoft/azure-docs/blob/master/articles/app-service-web/websites-dotnet-webjobs-sdk-storage-queues-how-to.md#automatic-poison-message-處理

暫無
暫無

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

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