Веб-задания Azure и ServiceBusTrigger

Как работает обработка подозрительных сообщений в ServiceBusTrigger SDK Azure WebJobs? Я хочу отправить сообщения очереди служебной шины, которые были исключены из очереди более 'x' раз, в другую очередь ServiceBus (или) Storage.

Электронная документация здесь и здесь и образцы SDK из здесь не содержит примеров того, как обработка подозрительных сообщений работает для ServiceBusTrigger. Эта работа продолжается?

Я попытался реализовать настраиваемую обработку подозрительных сообщений с использованием параметра dequeueCount, но не похоже, что он поддерживается для ServiceBusTriggers, поскольку я получал исключение времени выполнения {"Cannot bind parameter 'dequeueCount' when using this trigger."}

public static void ProcessMessage([ServiceBusTrigger(topicName: "abc", subscriptionName: "abc.gdp")] NotificationMessage message,
            [Blob("rox/{PayloadId}", FileAccess.Read)] Stream blobInput, Int32 dequeueCount)
        {
            throw new ArgumentNullException();
        }

person infinity    schedule 02.02.2015    source источник


Ответы (3)


Хотя вы не можете получить свойство dequeueCount для сообщений ServiceBus, вы всегда можете привязать к BrokeredMessage вместо NotificationMessage и получить от него свойство.

person Victor Hurdugaci    schedule 03.02.2015

Похоже, что сейчас WebJobs занимается этим внутренне.

Ссылка: Как использовать служебную шину Azure с пакетом SDK для веб-заданий

Конкретный раздел:

Как работает ServicebusTrigger

SDK получает сообщение в режиме PeekLock и вызывает Complete для сообщения, если функция завершается успешно, или вызывает Abandon в случае сбоя функции. Если функция работает дольше тайм-аута PeekLock, блокировка автоматически возобновляется.

Служебная шина выполняет собственную обработку подозрительных очередей, поэтому она не контролируется и не настраивается в SDK WebJobs.

Дополнительная справка

Обработку ядовитых сообщений нельзя контролировать или настраивать в Функциях Azure. Служебная шина сама обрабатывает подозрительные сообщения.

person Brendan Green    schedule 03.02.2015
comment
Я нахожу ServiceBusTrigger ... интригующим. Если я проверю статус вызова функции на панели управления WebJobs, он показывает статус «Успешно» с временем выполнения в миллисекундах для вызова, который еще не завершился. Это длительный процесс (›10 минут), но статус - Успешно. ServiceBusTrigger немедленно возвращает успех, а затем обрабатывает сообщение? - person Anton; 07.10.2015

Чтобы добавить к ответу Брендана Грина, SDK WebJobs вызывает Abandon для сообщений, которые не удалось обработать, и после максимального количества попыток эти сообщения перемещаются служебной шиной в очередь недоставленных сообщений. Свойства, определяющие, когда сообщение будет перемещено в очередь недоставленных сообщений, например максимальное количество доставок, время жизни и продолжительность PeekLock, можно изменить в служебной шине -> Очередь -> Свойства.

Дополнительную информацию об очереди недоставленных сообщений SB можно найти здесь: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dead-letter-queues

person DivineOps    schedule 07.05.2017