有人可以提供有关使用 Azure 服务总线 OnMessageOptions.AutoRenewTimeout 的更多指导吗 http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.onmessageoptions.autorenewtimeout.aspx
因为我没有找到太多有关此选项的文档,并且想知道这是否是续订消息锁定的正确方法
我的用例:
1) 消息处理队列的锁定持续时间为 5 分钟(允许的最大值)
2) 消息处理器使用 OnMessageAsync 消息泵从队列中读取(使用 ReceiveMode.PeekLock) 在手动调用 msg.CompleteAsync 之前,长时间运行的处理可能需要长达 10 分钟的时间来处理消息
3) 我希望消息处理器自动更新其锁定状态,直到预计完成处理的时间(约 10 分钟)。如果过了该时间还没有完成,锁应该自动释放。
谢谢
--更新
我最终没有得到关于 AutoRenewTimeout 的更多指导。我最终使用了一个自定义 MessageLock 类,该类根据计时器自动更新消息锁。
查看要点 - https://gist.github.com/Soopster/dd0fbd754a65fc5edfa9
最佳答案
要处理长消息处理,您应该设置 AutoRenewTimeout
== 10 分钟(根据您的情况)。这意味着每次 LockDuration
过期时,都会在这 10 分钟内更新锁定。
例如,如果您的 LockDuration
为 3 分钟,而 AutoRenewTimeout
为 10 分钟,则每 3 分钟锁定将自动更新一次(在 3 分钟、6 分钟和 9 分钟后) ),消息被消费12分钟后锁会自动释放。
关于azure - 指南 OnMessageOptions.AutoRenewTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27953882/