我正在使用azure web jobs sdk来处理消息。 ServiceBus用于消息传递。
ServiceBus消息中的最长锁定时间是5分钟,但我有长时间运行的任务,需要更多时间。在这种情况下,我应该调用BrokeredMessage.RenewLock,遗憾的是,我看不到从web作业触发到BrokeredMessage(我只是获取消息内容)。
有没有人知道如何在Web作业中触发RnewLock?
答案 0 :(得分:4)
在幕后,我们在PeekLock模式下使用MessageReceiver.OnMessageAsync,它会进行自动续订。这些值由 OnMessageOptions.AutoRenewTimeout 值决定,您可以根据需要增加该值。对于JobHost,您可以通过ServiceBusConfiguration.OnMessageOptions设置它来覆盖默认的OnMessageOptions,然后可以在主机启动时将其传递给config.UseServiceBus()。对于这些新选项,您应该使用最新的v1.1.0软件包,该软件包当前处于预发行版(rc1)中,但将在一周内进行RTM。
SDK repo中更详细地讨论了这个问题here。推荐阅读。最新版本还为ServiceBus添加了一组可扩展点,您可以使用这些点来覆盖消息的处理方式。请参阅" ServiceBus消息传递改进"在release notes。