当前位置: 首页 > 编程语言 > C#

AzureServiceBusAutoRenewTimeout分享

时间:2023-04-10 19:40:58 C#

AzureServiceBusAutoRenewTimeout我通过.netSDK使用AzureServiceBus队列。在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这个事实是你的测试是正确的。AutoRenewTimeout将允许将处理时间延长到LockDuration之后,这会增加DeliveryCount。它应该设置为最大处理时间回调。读取为一个时间范围,等待处理回调完成。之后,OnMessageAPI将不再发布续订。以上就是C#学习教程:AzureServiceBusAutoRenewTimeout分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: