使用 Azure 服务总线主题
例如,如果尝试更新锁,5 分钟后,它会显示 Lock has expired message!!
还有什么其他的选择可以克服它..
我有超过 5 分钟的交易,之后我想将代理消息状态设置为已完成。
有什么选择吗?
请您参考如下方法:
要补充 Sam 的回答,如果锁定期限已过,您将无法更新对该消息的锁定。一旦锁过期,消息就可以分发给另一个消费者。这意味着如果您被允许在锁过期后调用更新锁,则其他人可能正在处理该消息,并且就服务总线而言,它已经被其他消费者锁定。有人可能会争辩说,RenewLock 会检查消息是否已经再次发出并在没有发出时进行更新,这将是一件“很高兴”的事情,但它并没有这样做。如果您有足够多的消费者,并且考虑到消息是按顺序粗略处理的,那么消息很可能已经在其他地方关闭了。
如果您遇到某个工作单元花费的时间超过 5 分钟的情况,您将需要在处理过程中或在单独的线程上管理续订。例如,如果你的处理是你做一些工作并且控制流经常返回你的代码,处理线程可以关注时间量并在必要时更新;但是,您的处理线程更有可能会很忙,在这种情况下,您希望有一个单独的线程来处理续订。
您可能会查看您的系统正在做什么处理,看看是否可以将其分解为更小的工作 block 并分布在一系列队列中。
