У меня есть настройка лазурного веб-задания, используя следующий код:
Программа.cs:
public class Program {
static void Main(){
JobHostConfiguration config = new JobHostConfiguration();
config.Tracing.ConsoleLevel = TraceLevel.Verbose;
config.Queues.BatchSize = 1;
config.UseTimers();
config.Queues.MaxDequeueCount = 1;
config.Queues.MaxPollingInterval = TimeSpan.FromSeconds(3);
ServiceBusConfiguration sbConfig = new ServiceBusConfiguration();
sbConfig.MessageOptions = new OnMessageOptions
{
MaxConcurrentCalls = 5,
AutoRenewTimeout = TimeSpan.FromMinutes(10),
AutoComplete = true
};
config.UseServiceBus(sbConfig);
config.NameResolver = new QueueNameResolver();
var host = new JobHost(config);
host.RunAndBlock();
}
public class QueueNameResolver : INameResolver
{
public string Resolve(string name)
{
return ConfigurationManager.AppSettings[name];
}
}
}
Функции.cs
public static void ProcessQueueMessage([ServiceBusTrigger("%WebjobIncomingQueueName%")] ProcessingInfo processingInfo, TextWriter webjobTextWriter){
webjobTextWriter.WriteLine("Service Bus trigger started");
//long running task simulation
Thread.Sleep(400000);
}
Раздел конфигурации имени очереди файла App.config:
<appSettings>
<add key="WebjobIncomingQueueName" value="webjob-test" />
</appSettings>
Класс ProcessingInfo:
public class ProcessingInfo {
public long ID { get; set; }
}
Проблема здесь в том, что для одного и того же сообщения из webjob-test
очереди ProcessQueueMessage
запускается каждую минуту после первого появления. Согласно ответу здесь это должно быть легко настроено с помощью OnMessageOptions.AutoRenewTimeout
, однако, похоже, это не работает. Может ли кто-нибудь помочь с этой проблемой?