Триггер очереди функций Azure: как установить задержку для сообщения в очереди

114
7

У меня есть функция Azure, которая прослушивает лазурную очередь и, например, что-то не так. Он снова добавляет сообщение в очередь. Но через 5 раз сообщение будет перемещено в очередь отравления.

Я хочу повторно добавить сообщение в очередь с задержкой. Например, повторите через 1 час. Потому что моя функция Azure работает с внешним ресурсом, который сейчас может быть недоступен. Я не хочу делать 5 попыток в течение 10 секунд вообще, я хочу повторить попытку через 1 час. Конечно, я пишу свою собственную реализацию, но, вероятно, эта функция уже существует.

спросил(а) 2021-01-19T14:48:57+03:00 2 месяца, 3 недели назад
1
Решение
123

@4c74356b41 указал верный путь. Настройки host.json для очереди - это то, что вы ищете.

visibilityTimeout: интервал времени между повторными попытками при сбое обработки сообщения. maxDequeueCount - количество попыток обработки сообщения перед его перемещением в очередь нежелательных сообщений.

{
"version": "2.0",
"extensions": {
"queues": {
"visibilityTimeout" : "01:00:00",
"maxDequeueCount": 2
}
}
}

Если ваша функция v1, аналогично

{
"queues": {
"visibilityTimeout" : "01:00:00",
"maxDequeueCount": 2
}
}

Обновить

Поскольку проблема в основном заключается в изменении visibilityTimeout соответствии с конкретной ситуацией, установка задержки CloudQueue.AddMessageAsync соответственно является единственным способом. На самом деле visibilityTimeout делает то же самое, но на уровне приложения-функции (все очереди), поэтому в этом случае нам не нужно настаивать на этом.

ответил(а) 2021-01-19T14:48:57+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема