gpt4 book ai didi

azure - Azure 服务总线中的消息锁定和锁定续订如何工作?

转载 作者:行者123 更新时间:2023-12-03 17:09:44 25 4
gpt4 key购买 nike

我在尝试确定窥视锁在服务总线中的工作原理时感到有点困惑。特别是,我将 Microsoft.Azure.ServiceBus 与 Azure Functions 和 ServiceBusTrigger 结合使用。

据我所知,消息被锁定的时间是在队列本身上设置的,默认为 30 秒,但可以设置为最多 5 分钟的任何时间。

当从队列中查看消息时,此锁就会启动。

然后有一个名为 maxAutoRenewDuration 的设置,当使用 Azure Functions 时,该设置在 Extensions:ServiceBus:messageHandlerOptions 下的 host.json 文件中进行设置。这允许客户端自动请求一个或多个锁扩展,直到达到 maxAutoRenewDuration。一旦达到此限制,将不会请求续订并且锁定将被释放。

续订是尽最大努力,但无法保证,因此理想情况下,您尝试提出一种设计,通常在队列上指定的锁定期内处理消息。

到目前为止我做对了吗?

我还有疑问

  1. maxAutoRenewDuration 的设置是否存在限制。我读过的一篇文章似乎建议可以将其设置为我需要的任何内容,以确保我的消息得到处理( link )。不过,Microsoft 文档指出,此最大值也限制为 5 分钟 ( link )。

The maxAutoRenewDuration is configurable in host.json, which maps to OnMessageOptions.MaxAutoRenewDuration. The maximum allowed for this setting is 5 minutes according to the Service Bus documentation

哪个是正确的?我知道默认锁定持续时间最长为 5 分钟,但这似乎没有意义,这也适用于 maxAutoRenewDuration?

  • 我在一些文章中读到了名为 MaxLockDuration 的设置(例如 link )。这只是指队列本身设置的锁定持续时间吗?

  • 我还遗漏了什么吗?在处理锁定和续订时,队列上设置的锁定持续时间和代码中的 maxAutoRenewDuration 是我需要考虑的主要事项吗?

  • 谢谢

    艾伦

    最佳答案

    我理解你的困惑。 official doc maxAutoRenewDuration 的解释似乎是错误的。已经有一个开放文档问题 https://github.com/MicrosoftDocs/azure-docs/issues/62110也是一个引用https://github.com/Azure/azure-functions-host/issues/6500 .

    明确您的问题:

    • #1:如上所述,存在开放文档问题。
    • #2:MaxLockDuration 是服务总线队列端设置,基本上表示如果您从队列中查看锁定消息,则该消息将在该持续时间内为使用者锁定。因此,除非您在该期限内完成消息处理或更新锁定,否则锁定将过期。
    • #3:@sean-feldman 在线程中的精彩解释 https://stackoverflow.com/a/60381046/13791953应该回答这个问题。

    What it does is extends the message lease with the broker, "re-locking" it for the competing consumer that is currently handling the message. MaxAutoRenewDuration should be set to the "possibly maximum processing time a lease will be required".

    关于azure - Azure 服务总线中的消息锁定和锁定续订如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65846738/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com