Вам не нужно явно определять логику повтора. Когда сообщение выводится из очереди служебной шины, оно становится невидимым из очереди в течение определенного периода времени (время блокировки по умолчанию 30 секунд, вы можете настроить его). Вы пытаетесь обработать сообщение, если оно становится успешным, вы просто вызываете BrokeredMessage.CompleteAsync, что означает, что я закончил, и пометьте это сообщение как завершенное. Если у вас есть проблемы в нисходящем потоке, вы можете отказаться от сообщения, вызвав BrokeredMessage.AbandonAsync. Это разблокирует сообщение, и оно снова появится в очереди. Сообщение снова будет принято работником и обработано. Пока вы не добьетесь успеха или не достигнете максимального предела повторов, после которого сообщение отправляется в очередь недоставленных сообщений.