Основано на комментариях выше
Ваша функция запускается сообщением в служебной шине. Вы обрабатываете сообщение. Если вы довольны и выполнили заданное время выполнения (5 минут по умолчанию), то сообщение помечается как выполненное. Если вы не счастливы, бросьте исключение. Функция будет считать сообщение не завершенным и отклонит его, чтобы оно снова появилось в очереди, однако число повторных попыток будет увеличиваться до тех пор, пока оно не достигнет максимального значения, после которого сообщение будет отправлено в очередь недоставленных сообщений.
Несколько замечаний
Если вы не сгенерируете исключение и процесс сделает это сам (из-за какой-то ошибки обработки), он все равно посчитает оставленное сообщение и попытается повторить попытку. Однако, если функция выполняется успешно без каких-либо ошибок, но результат не тот, который вы хотите, то бросьте ex your self.
Также в сервисной шине увеличьте время блокировки, чтобы соответствовать времени обработки вашей функции. например Для завершения функции требуется 5 минут, но время блокировки сообщения в служебной шине составляет 30 секунд, сообщение снова появится в очереди сообщений, в то время как другая копия сообщения все еще обрабатывается функцией. Поэтому увеличьте время блокировки сообщений сервисной шины, которое, по вашему мнению, является достаточным для завершения процесса.