Масштабировать лазурное непрерывное веб-задание - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь масштабировать непрерывную веб-работу.Мой план обслуживания установлен на стандартном уровне, поэтому я могу масштабировать 10 экземпляров.Проблема заключается в том, что веб-задание не масштабируется и в любой момент работает только один.

Количество экземпляров: enter image description here

Функции: enter image description here

Код функции: enter image description here

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Я бы использовал непрерывный веб-задание вместо одного с TimerTrigger (TimerTrigger означает, что задание НЕ является непрерывным).Вы должны удалить TimerTrigger из своего кода.

Continuous WebJob будет выполняться во всех доступных экземплярах по умолчанию.

В коде WebJob вы должны позаботиться о том, чтобы сообщенияправильно заблокированы и завершены, чтобы избежать проблем с параллелизмом.

Метод Peek() не очень подходит для параллельной обработки, поскольку сообщения не заблокированы или не завершены и не заботятся о других блокировках.Используйте либо Receive(), либо основанное на событии RegisterMessageHandler() patthern.

Вот некоторая документация по этому вопросу:

0 голосов
/ 11 июня 2018

Согласно этой статье , мы могли бы найти причину, пожалуйста, обратитесь к ней.

За кулисами TimerTrigger использует функцию Singleton SDK WebJobsчтобы убедиться, что только один экземпляр вашей запущенной функции работает в любой момент времени .Когда запускается JobHost, для каждой из ваших функций TimerTrigger берется аренда BLOB-объектов (Singleton Lock).Эта распределенная блокировка гарантирует, что в любое время будет работать только один экземпляр вашей запланированной функции.

...