首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure ServiceBus AutoRenewTimeout

Azure ServiceBus AutoRenewTimeout
EN

Stack Overflow用户
提问于 2016-04-11 23:47:28
回答 1查看 6.4K关注 0票数 17

我正在通过Azure ServiceBus使用Azure .net队列。OnMessageHandler/OnMessageOptions上有一个名为"AutoRenewTimeout“的标志,但是对于这个值的实际含义似乎存在混淆。

在这里的正式文档中,https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.onmessageoptions.aspx建议AutoRenewTimeout应该大于队列锁定持续时间。

获取或设置自动更新锁的最大持续时间。此值应大于最长的消息锁定持续时间;例如,LockDuration属性。

这似乎表明,AutoRenewTimeout或多或少是处理消息所需的最大时间。例如,如果您的锁定持续时间为1分钟,并且自动超时时间为5分钟,则在放弃并使其再次在队列中可见之前,消息将被更新5次。还有其他的StackOverflow答案证实了这一点,例如https://stackoverflow.com/a/36051408

要处理长消息处理,您应该设置AutoRenewTimeout == 10分钟(在您的情况下)。这意味着每次LockDuration过期时,锁都会在这10分钟内被更新。 因此,如果您的LockDuration是3分钟,AutoRenewTimeout是10分钟,那么每3分钟的锁就会被自动更新(在3分钟、6分钟和9分钟之后),并且锁将在12分钟后自动释放,因为消息被消耗了。

然而,在更多的研究中,我偶然发现了一条老的推特(https://twitter.com/clemensv/status/649940087267041284),这条推特看起来是微软信息传递的首席架构师。在这条推文中,它似乎认为AutoRenewTimeout是它调用"RenewLock“方法的间隔。

当回调处于活动状态时,在消息上调用https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.renewlock.aspx的时间间隔

因此,例如,如果锁持续时间为1分钟,则AutoRenewTimeout应该是30秒左右,以确保消息锁在释放之前被更新。

在我自己的测试中,我倾向于前者是正确的,但这条推文让我怀疑也许我不知道如何充分利用AutoRenewTimeout

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-13 05:28:30

你的测试是正确的。

AutoRenewTimeout将允许将处理时间延长到LockDuration w/o以外,从而增加DeliveryCount。应该将其设置为最大处理时间回调。将其读取为等待处理回调完成的时间范围。在此之后,OnMessage API将不再发布更新。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36561227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档