Невозможно сделать непрерывную веб-работу Azure одиночной - PullRequest
0 голосов
/ 03 октября 2018

У меня есть веб-задание Azure, которое читает из очереди служебной шины.Моя цель - синхронно обрабатывать 1 сообщение из очереди.Возможно ли это?

Я заметил, что если в очереди 100 сообщений, я вижу 10 ~ 20 экземпляров веб-задания, выполняющихся одновременно, каждый из которых обрабатывает разные сообщения из очереди.Я хотел бы ограничить это 1 сообщением.До сих пор я пробовал следующее:

  1. Я создал файл settings.job со свойством {"is_singleton": true}.
  2. Я также пытался использовать атрибут [Singleton] поверх сигнатуры функции.
  3. Я пытался установить свойства config.Queues.BatchSize = 1 и config.Queues.NewBatchThreshold = 1.

Вот подпись моей функции webjob:

[ServiceBusAccount("servicebusconnstr")]
public static void MigrateDoc([ServiceBusTrigger("myqueue")] string queueItem, TextWriter log)
{
...
}

Кажется, что ни один из этих методов не работает.

1 Ответ

0 голосов
/ 03 октября 2018

Разобрался.Мне нужны следующие настройки: ServiceBusConfiguration.MessageOptions.MaxConcurrentCalls = 1. Это можно сделать так:

var config = new JobHostConfiguration();
var serviceBusConfig = new ServiceBusConfiguration();
serviceBusConfig.MessageOptions.MaxConcurrentCalls = 1;

if (config.IsDevelopment)
{
     config.UseDevelopmentSettings();
}

config.UseServiceBus(serviceBusConfig);

var host = new JobHost(config);
host.RunAndBlock();

Благодаря этому сообщению: Параллелизм Azure WebJob для примера с использованием ServiceBusTrigger .

...