在我的一个WebJobs中发生了一个奇怪的事情,我找不到什么问题。
此WebJob配置为在特定服务总线队列上收到消息后立即使用ServiceBusTrigger。此函数的执行时间为分钟/小时,因此我按如下方式配置了JobHostConfiguration:
config.UseServiceBus(new ServiceBusConfiguration()
{
MessageOptions = new Microsoft.ServiceBus.Messaging.OnMessageOptions()
{
MaxConcurrentCalls = 3,
AutoRenewTimeout = new TimeSpan(4, 0, 0),
AutoComplete = true
}
});
如果我理解正确,这将授予每个功能:
这些消息包含必须为不同用户执行的作业。为了在不同用户的parallalel中执行,但作为每个用户的单例,在函数内部我采用租约(不同于每个用户)并保持60秒,使用任务每30秒更新一次。 / p>
这似乎有效:对不同的客户并行执行作业,同一用户的相同请求被序列化。
现在,有时会发生WebJob停止触发该功能,即使队列中充满了消息。我不明白为什么。
一旦我重新启动webjob,一切都像以前一样运行。 关于为什么会发生这种情况的任何想法?
我注意到,即使webjobs正在运行,应用程序也被(错误地)停止了。也许这就是问题?