Я использовал очереди хранения 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
, что я думаю, что это делает!
Я до сих пор не полностью уверен в сценарии WebJob. Выполняют ли «одновременные вызовы обратного вызова» одновременные вызовы методу, отмеченному «ServiceBusTrigger»? – johnnycardy
Я только что закончил настройку этого сценария, и я могу подтвердить, что он работает :-) – johnnycardy
@johnnycardy awesome! Рад, что он работает, как сказано! – tripdubroot