Ядовитая очередь Azure не создается из-за сбоя функций триггера очереди Azure

Я работаю над некоторой работой по автоматизации для действий Azure с помощью PowerShell, в рамках которой мы используем функции queuetrigger. Но всякий раз, когда возникает ошибка, подозрительная очередь для этих сообщений не создается. Мы можем регистрировать ошибки в app-insights с помощью блока try catch, но мы не можем видеть создание подозрительной очереди для этих сообщений.


person Krushna Kumar    schedule 20.01.2021    source источник
comment
вы обрабатываете ошибку в блоке catch? или бросок снова из улова, вызывающий сбой функции?   -  person Kamesh    schedule 20.01.2021
comment
Мы обнаруживаем ошибку в блоке catch и регистрируемся в App-insights, если это проблема, по вашему мнению, я пробовал ее, удалив блок try catch, но бесполезно   -  person Krushna Kumar    schedule 20.01.2021
comment
Вы должны позволить функции завершиться ошибкой, она будет перемещена в очередь с ошибками только тогда, когда она исчерпала количество повторных попыток, и она все время терпит неудачу. Таким образом, по умолчанию он перемещается в подозрительную очередь, когда функция терпит неудачу 5 раз подряд для одной и той же записи в основной очереди.   -  person Kamesh    schedule 20.01.2021
comment
Не могли бы вы опубликовать сообщение об ошибке?   -  person Doris Lv    schedule 20.01.2021
comment
Я удалил блок try catch, и он показывал ошибки в журналах Azure, но я не мог видеть очередь отравлений   -  person Krushna Kumar    schedule 20.01.2021
comment
Мы не выполняем функцию из-за неправильного имени командлета для хранилища базы данных, и он показывал ошибку, например, insert-sqltable not found, проверьте имя командлета ... И т. Д., Как это   -  person Krushna Kumar    schedule 20.01.2021
comment
Вам это помогает?   -  person singhh-msft    schedule 29.01.2021


Ответы (1)


Выполните следующие шаги и посмотрите, не пропустили ли вы что-нибудь.

  • Создайте обработчик сообщений очереди:

    введите описание изображения здесь

    Если вы по какой-то причине не смогли обработать сообщение должным образом (читайте - вы генерируете исключения во время обработки), среда выполнения в какой-то момент решит переместить ваше сообщение в подозрительную очередь. Вы можете узнать больше об этом механизме здесь. Вы, конечно, можете использовать здесь вариант try\catch, но тогда вопрос в том, что именно вы собираетесь делать внутри catch, чтобы повторить попытку позже? Наилучший вариант - просто позволить исключению перейти в среду выполнения и делегировать исключение из очереди на следующем этапе.

  • Когда вы не можете обработать сообщение должным образом (есть даже порог, сколько раз среда выполнения будет пытаться передать вам ваше сообщение для обработки перед переходом в опасную очередь):

    введите описание изображения здесь

Обратите внимание: подозрительная очередь будет иметь вид {your-queue-name}-poison. Не должно быть никаких ограничений разрешений (RBAC) для вашего хранилища BLOB-объектов. Если есть, предоставьте своему функциональному приложению соответствующие разрешения.

Дополнительная информация: Если вы хотите обрабатывать подозрительные сообщения, вы можете выполнить это пошаговое руководство: Захват исключения в триггере Poison Queue Функций Azure

person singhh-msft    schedule 20.01.2021