在 web jobs sdk 中使用 ServiceBus 时更新锁

Renew lock when using ServiceBus in web jobs sdk

我正在使用 azure web jobs sdk 来处理消息。 ServiceBus 用于消息传递。

ServiceBus 消息中的最大锁定时间为 5 分钟,但我有很长的 运行 任务需要更多时间。在这种情况下,我应该调用 BrokeredMessage.RenewLock,不幸的是,看起来我无法从 Web 作业触发器访问 BrokeredMessage(我只获取消息内容)。

有谁知道如何在网络作业触发器中使用 RnewLock?

在幕后,我们在 PeekLock 模式下使用 MessageReceiver.OnMessageAsync,它确实会自动续订。这些由 OnMessageOptions.AutoRenewTimeout 值控制,您可以根据需要增加该值。对于 JobHost,您可以通过 ServiceBusConfiguration.OnMessageOptions 设置它来覆盖默认的 OnMessageOptions,然后您可以在主机启动时将其传递给 config.UseServiceBus()。对于这些新选项,您应该使用最新的 v1.1.0 软件包,该软件包目前处于预发布 (rc1) 阶段,但将在本周内进行 RTM。

更详细地讨论了这个问题here in the SDK repo. Recommend reading that through. The latest release also adds a bunch of extensibility points for ServiceBus that you can use to override how messages get processed. See "ServiceBus Messaging Improvements" in the release notes