Ala*_*lan 5 azure azureservicebus azure-servicebus-queues azure-functions
试图确定窥视锁在服务总线中的工作方式时,我有点困惑。特别是我将 Microsoft.Azure.ServiceBus 与 Azure Functions 和 ServiceBusTrigger 一起使用。
从我可以看出消息被锁定的时间是在队列本身上设置的,默认为 30 秒,尽管它可以设置为最多 5 分钟的任何时间。
当从队列中偷看一条消息时,这个锁就会启动。
然后有一个名为 maxAutoRenewDuration 的设置,当使用 Azure Functions 时,该设置在 Extensions:ServiceBus:messageHandlerOptions 下的 host.json 文件中设置。这允许客户端自动请求一个或多个对锁的扩展,直到达到 maxAutoRenewDuration。一旦达到此限制,将不会请求续订,并且锁定将被释放。
续订是尽最大努力并且不能保证,因此理想情况下,您尝试提出一种设计,其中消息通常在队列上指定的锁定期内处理。
到目前为止我做对了吗?
我还有的问题是
maxAutoRenewDuration 可在 host.json 中配置,它映射到 OnMessageOptions.MaxAutoRenewDuration。根据服务总线文档,此设置允许的最大值为 5 分钟
哪个是正确的?我知道默认锁定持续时间最长为 5 分钟,但这似乎也适用于 maxAutoRenewDuration 似乎没有意义?
我在一些文章(例如链接)中读到了一个叫做 MaxLockDuration 的设置。这只是指队列本身设置的锁定持续时间吗?
我还缺什么吗?队列中设置的锁定持续时间和代码中的 maxAutoRenewDuration 是我在处理锁定和续订时需要考虑的主要事项吗?
谢谢
艾伦
我理解你的困惑。官方文档的解释maxAutoRenewDuration似乎是错误的。已经有一个开放文档问题https://github.com/MicrosoftDocs/azure-docs/issues/62110以及一个参考https://github.com/Azure/azure-functions-host/issues/6500。
明确您的问题:
它的作用是延长与代理的消息租约,为当前正在处理消息的竞争消费者“重新锁定”它。MaxAutoRenewDuration 应设置为“租约可能需要的最大处理时间”。
| 归档时间: | 
 | 
| 查看次数: | 713 次 | 
| 最近记录: |