2016-03-09 2 views
1

Нам необходимо обрабатывать сообщения из очереди хранения Azure поочередно, по одному за раз.Сообщения о очередях процесса хранения Azure WebJob Серийно

По умолчанию JobHostConfiguration.Queues.BatchSize устанавливается на 16

https://github.com/Azure/azure-webjobs-sdk/blob/0581fb1610d56a597523fcea67733944efba9541/src/Microsoft.Azure.WebJobs.Host/JobHostQueuesConfiguration.cs#L15

И эти 16 СООБЩЕНИЙ WebJob стягивает очередь будет обрабатываться параллельно. Вместо этого нам нужно, чтобы WebJob обрабатывал сообщения поочередно, по одному за раз.

Как это можно достичь?

В настоящее время мы вынуждены установить BatchSize на 1, что не идеально, потому что оно вводит много времени на увеличение/уменьшение времени при чтении из очереди сообщений.

Уточнение: нам не нужно принудительно вводить первую в первую очередь или гарантированную обработку заказа только по одной обработке.

+2

Я не верю, что очередные очереди хранения гарантируют первое в первом порядке. Вы пытались использовать очередь служебной шины вместо этого. На этой странице упоминаются некоторые отличия: https://azure.microsoft.com/en-us/documentation/articles/service-bus-azure-and-service-bus-queues-compared-contrasted/ –

+1

Вопрос заключается в том, _ordered_ обработки или просто _one-at-time_ обработки? –

+0

@DavidMakogon просто обрабатывается один раз в день, нет необходимости в FIFO –

ответ

1
JobHostConfiguration config = new JobHostConfiguration(); 
config.Queues.BatchSize = 1; 
config.Queues.MaxDequeueCount = 1; 
config.Queues.MaxPollingInterval = TimeSpan.FromSeconds(5); 

Установите BATCHSIZE и MaxDequeueCount 1, Set MaxPollingInterval 5 секунд.

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