我有以下用例:
当我从Azure Service Bus队列中出列消息时,有时完成消息所需的时间很长(5-10分钟)。我需要能够更新消息的锁定,因为处理的默认时间是60秒
处理消息的功能是同步的。如何在函数继续执行时调用RenewLock?
答案 0 :(得分:1)
对于这种情况,ASB客户端提供的OnMessage API可以提供帮助。 OnMessage API允许注册回调并指定最大自动锁定续订时间,这样您就不必自己动手。
以下是有关其工作原理的详细说明:https://weblogs.asp.net/sfeldman/azure-service-bus-onmessage-api
答案 1 :(得分:0)
您至少有几个基本选项:
启动计时器并每隔60秒或更短时间启动计时器以更新锁定,在线程池上启动计时器,这样您就不会被主要工作阻止
将重载卸载到一个单独的线程并保持主线程几乎空闲,只需在循环中等待60s或更少的条件变量,一旦完成作业就应该发出条件变量