2015-02-02 8 views
5

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

Онлайн документация here и here и SDK Образцы here не примеры того, как обработка сообщений об ошибках работает для 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(); 
     } 

ответ

6

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

6

Похоже WebJobs обрабатывает это внутренне в момент.

Ссылка: How to use Azure Service Bus with the WebJobs SDK

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

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

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

Serice Bus выполняет свою обработку ядовитых очередей, так что это не , управляемый, либо настраиваемый в SDK WebJobs.

+0

Я считаю ServiceBusTrigger быть ... интригующим. Если я проверяю статус вызова функции в панели управления WebJobs, он говорит о статусе «Успех» с временем выполнения в миллисекундах для вызова, который еще не завершен. Это длительный процесс (> 10 минут), но статус «Успех» сразу. Возвращает ли ServiceBusTrigger успех сразу, а затем обрабатывает сообщение? – Anton

0

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

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