簡體   English   中英

如何從 Azure Function 更新服務總線消息?

[英]How to renew Service Bus message from Azure Function?

我按照Microsoft 的文檔進行設置(使用 c#),但由於服務總線隊列的鎖定持續時間,消息將過期。

isSessionsEnabled為false,我在host.json中的設置如下,供參考:

{
    "version": "2.0",
    "functionTimeout": "00:10:00",
    "extensions": {
        "serviceBus": {
            "prefetchCount": 100,
            "messageHandlerOptions": {
              "autoComplete": true,
              "maxConcurrentCalls": 32,
              // tried "00:00:55", "00:02:30", "00:05:00"
              "maxAutoRenewDuration": "00:10:00"
            }
        }
    }
}

我還嘗試不在host.json中實現extensions (從文檔中可以自動更新鎖)但仍然不起作用。

作為參考,發現這個提到微軟的文檔可能有問題但沒有提到可能的解決方案。

由function運行時控制,無需手動更新鎖。Function可以自行更新消息鎖。

如果您已將isSessionsEnabled設置為true ,則sessionHandlerOptions將受到尊重。 由於您已將isSessionsEnabled設置為false ,因此messageHandlerOptions將受到尊重。

Peeklock 行為

當 Functions 運行時以窺視鎖定模式接收消息時,一旦 function 成功完成,它就會對消息調用Complete ,如果 function 失敗,則會調用Abandon 如果 function 運行時間超過PeekLock超時時間,只要 function 正在運行,鎖就會自動更新。

maxAutoRenewDuration可在host.json中配置,映射到OnMessageOptions.MaxAutoRenewDuration根據文檔,最大允許時間為 5 分鍾,而您可以將函數運行時間限制從默認的 5 分鍾增加到 10 分鍾。 對於服務總線功能,您不希望這樣做,因為您會超出服務總線續訂限制。

請參閱此以獲取有關消息過期的更多信息。

你能分享你的函數的簽名嗎? 我相信 maxAutoRenewDuration 僅適用於接收單個消息的函數,即不適用於接收消息數組/列表的函數。

暫無
暫無

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

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