我有一个从Service Bus队列读取的Azure webjob。我的目标是针对每个实例同步处理来自队列的1条消息。有可能吗?
我观察到的是,如果队列中有100条消息,我会看到10到20个Webjob实例同时运行,每个实例都处理来自队列的不同消息。我想将此限制为1条消息。到目前为止,我已经尝试了以下方法:
这是我的webjob函数的签名:
[ServiceBusAccount("servicebusconnstr")]
public static void MigrateDoc([ServiceBusTrigger("myqueue")] string queueItem, TextWriter log)
{
...
}
这些方法似乎都不起作用。
答案 0 :(得分:0)
弄清楚了。我需要的设置是ServiceBusConfiguration.MessageOptions.MaxConcurrentCalls =1。可以这样做:
var config = new JobHostConfiguration();
var serviceBusConfig = new ServiceBusConfiguration();
serviceBusConfig.MessageOptions.MaxConcurrentCalls = 1;
if (config.IsDevelopment)
{
config.UseDevelopmentSettings();
}
config.UseServiceBus(serviceBusConfig);
var host = new JobHost(config);
host.RunAndBlock();