4

Я использовал очереди хранения Azure для подачи WebJob, используя атрибут QueueTrigger. Настроить мой QueueTrigger чтобы из очереди ряда элементов для параллельной обработки, например:Azure WebJob параллелизм при использовании ServiceBusTrigger

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, что я думаю, что это делает!

ответ

3

По существу да, MaxConcurrentCalls определяет количество потоков, используемых клиентом для обработки очереди.

Когда QueueClient.OnMessage метод называется it starts a message pump на петле infinte, которая постоянно опроса. OnMessageOptions.MaxConcurrentCall устанавливает number of concurrent calls to the callback the message pump should initiate.

Больше предыстория: Introducing the Event-Driven Message Programming Model for the Windows Azure Service Bus

+1

Я до сих пор не полностью уверен в сценарии WebJob. Выполняют ли «одновременные вызовы обратного вызова» одновременные вызовы методу, отмеченному «ServiceBusTrigger»? – johnnycardy

+0

Я только что закончил настройку этого сценария, и я могу подтвердить, что он работает :-) – johnnycardy

+0

@johnnycardy awesome! Рад, что он работает, как сказано! – tripdubroot

Смежные вопросы