在等待另一个同步功能完成时执行一个功能

时间:2017-01-02 05:35:56

标签: c# azureservicebus

我有以下用例:

当我从Azure Service Bus队列中出列消息时,有时完成消息所需的时间很长(5-10分钟)。我需要能够更新消息的锁定,因为处理的默认时间是60秒

处理消息的功能是同步的。如何在函数继续执行时调用RenewLock?

2 个答案:

答案 0 :(得分:1)

对于这种情况,ASB客户端提供的OnMessage API可以提供帮助。 OnMessage API允许注册回调并指定最大自动锁定续订时间,这样您就不必自己动手。

以下是有关其工作原理的详细说明:https://weblogs.asp.net/sfeldman/azure-service-bus-onmessage-api

答案 1 :(得分:0)

您至少有几个基本选项:

  1. 启动计时器并每隔60秒或更短时间启动计时器以更新锁定,在线程池上启动计时器,这样您就不会被主要工作阻止

  2. 将重载卸载到一个单独的线程并保持主线程几乎空闲,只需在循环中等待60s或更少的条件变量,一旦完成作业就应该发出条件变量