Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure ServiceBus自动恢复超时_C#_Azure_Azureservicebus - Fatal编程技术网

C# Azure ServiceBus自动恢复超时

C# Azure ServiceBus自动恢复超时,c#,azure,azureservicebus,C#,Azure,Azureservicebus,我正在通过.net SDK使用Azure ServiceBus队列。OnMessageHandler/OnMessageOptions上有一个名为“AutoRenewTimeout”的标志,但这个值的实际含义似乎有点混淆 在这里的官方文档中,它建议AutoRenewTimeout应该大于队列锁定持续时间 获取或设置自动续订锁的最长持续时间。此值应大于最长消息锁定持续时间;例如,LockDuration属性 这似乎表明AutoRenewTimeout或多或少是处理消息所需的最长时间。e、 g.如果

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

在这里的官方文档中,它建议AutoRenewTimeout应该大于队列锁定持续时间

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

这似乎表明AutoRenewTimeout或多或少是处理消息所需的最长时间。e、 g.如果您的锁定持续时间为1分钟,并且autorenewtimeout为5分钟,则在放弃并使其再次在队列中可见之前,消息将总共续订5次。还有其他StackOverflow答案证实了这一点,例如

要处理长消息处理,您应该设置AutoRenewTimeout==10分钟(在您的情况下)。这意味着每次LockDuration过期时,锁都将在这10分钟内更新

所以,例如,如果您的锁定持续时间为3分钟,而AutoRenewTimeout为10分钟,则每3分钟会自动更新一次锁定(在3分钟、6分钟和9分钟之后),并且自消息被使用后,锁定会在12分钟后自动释放

然而,在进一步的研究中,我偶然发现了一条古老的tweet(),这条tweet看起来是微软信息服务的首席架构师。在这条推文中,它似乎暗示AutoRenewTimeout是它调用“RenewLock”方法的时间间隔

它是在回调处于活动状态时对消息调用的时间间隔

因此,例如,如果您的锁定持续时间为1分钟,则AutoRenewTimeout应该大约为30秒,以确保消息锁定在释放之前得到更新

在我自己的测试中,我倾向于前者是正确的,但这条推特让我怀疑这样一个事实:也许我不知道AutoRenewTimeout的充分使用,你的测试是正确的


AutoRenewTimeout
将允许将处理时间延长到
LockDuration
之外,而不增加
DeliveryCount
。它应该设置为最大处理时间回调。将其读取为等待处理回调完成的时间范围。在此之后,OnMessageAPI将不会发布续订

根据你的测试,哪个塞纳里奥似乎能回答你的问题?前者似乎是正确的。但我担心我遗漏了一些重要/明显的东西,因为微软的消息传递首席架构师似乎与此相矛盾。我正在寻找如何在批处理-serviceBusClient.ReceiveBatch()中设置AutoRenewTimeout。但是我找不到任何方法设置此属性以进行批处理。您不能。此API仅适用于消息处理程序。您必须手动续订消息锁。