Ant*_*ton 3 c# azureservicebus azure-webjobs azure-webjobssdk
我已使用WebJobs SDK将长时间运行的进程实现为WebJob.期待长时间运行的过程,因为我想要结果.
public async Task ProcessMessage([ServiceBusTrigger("queuename")] MyMessage message)
{
await Run(message.SomeProperty); // takes several minutes
// I want to do something with the result here later..
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚的是为什么消息有时会被放弃,这当然会再次触发处理程序.我试图调试(本地),在ProcessMessage完成之前设置断点,我可以看到它似乎成功完成.
WebJobs SDK的Sevice Bus部分负责消息锁更新,因此就我所理解的而言,这应该不是问题.
我错过了什么以及如何排除故障?
[以前编辑错误的回复]
WebJobs SDK依赖于MessageReceiver.OnMessageAsync完成的自动锁更新.这些续订由OnMessageOptions.AutoRenewTimeout设置控制,可以在WebJobs SDK的v1.1.0版本中进行如下配置:
JobHostConfiguration config = new JobHostConfiguration();
ServiceBusConfiguration sbConfig = new ServiceBusConfiguration();
sbConfig.OnMessageOptions = new OnMessageOptions
{
MaxConcurrentCalls = 16,
AutoRenewTimeout = TimeSpan.FromMinutes(10)
};
config.UseServiceBus(sbConfig);
Run Code Online (Sandbox Code Playgroud)
您还可以通过自定义MessageProcessor自定义这些值.有关这些新功能的更多详细信息,请参阅此处的发行说明.
| 归档时间: |
|
| 查看次数: |
676 次 |
| 最近记录: |