Параллелизм Azure WebJob при использовании ServiceBusTrigger
Я использовал очереди хранения Azure для подачи WebJob, используя QueueTrigger
приписывать. Я настраиваю QueueTrigger
удалить из очереди несколько элементов для одновременной обработки, например:
public static void Main()
{
JobHostConfiguration config = new JobHostConfiguration();
config.NameResolver = new QueueNameResolver();
config.Queues.NewBatchThreshold = 10;
JobHost host = new JobHost(config);
host.RunAndBlock();
}
public static void ExecuteStorageQueueItem([QueueTrigger("%AzureQueueName%")] CloudQueueMessage message, TextWriter logger)
{
ProcessRequest(message.AsString, logger);
}
Я бы предпочел использовать Service Bus. Ли MaxConcurrentCalls
параметр на ServiceBusConfiguration
разрешить одинаковое автоматическое параллельное выполнение? Например:
public static void Main()
{
JobHostConfiguration config = new JobHostConfiguration();
config.NameResolver = new QueueNameResolver();
ServiceBusConfiguration serviceBusConfig = new ServiceBusConfiguration();
serviceBusConfig.MessageOptions.MaxConcurrentCalls = 10;
config.UseServiceBus(serviceBusConfig);
JobHost host = new JobHost(config);
host.RunAndBlock();
}
public static void ExecuteServiceBusItem([ServiceBusTrigger("%ServiceBusQueueName%")] BrokeredMessage message, TextWriter logger)
{
ProcessRequest(message.GetBody<string>(), logger);
}
Я не уверен MaxConcurrentCalls
делает то, что я думаю, что делает!
1 ответ
По сути да, MaxConcurrentCalls
определяет количество потоков, используемых Клиентом для обработки очереди.
когда QueueClient.OnMessage
вызывается метод, который запускает насос сообщений в бесконечном цикле, который постоянно опрашивает. OnMessageOptions.MaxConcurrentCall
устанавливает количество одновременных вызовов для обратного вызова, который должен инициировать насос сообщений.
Еще история: Представляем модель программирования сообщений на основе событий для служебной шины Windows Azure