Как MailerQ ждёт между попытками провереноважно
Ожиданием между попытками занимается брокер, а не MTA: письмо публикуется в очередь, где сообщения истекают через заданное время, а истечение возвращает их в очередь отправки.
Подробно
Пока MTA ждёт, он не держит ничего. Он подбирает ступени лестницы, складывающиеся в нужную задержку, публикует письмо в самую большую подходящую и забывает о нём; когда истекает TTL, RabbitMQ отправляет письмо дальше как недоставленное — на следующую ступень, и в конце обратно в очередь отправки. Ожидание в 600 секунд — это 512 + 64 + 16 + 8, четыре перехода. Отсюда три следствия. Ждущая почта видима: глубина очередей-ступеней — единственный честный ответ на вопрос «сколько ждёт повтора», и смотреть телеметрии Хаба надо именно туда, поскольку промежуточные попытки как результаты не публикуются никогда. Ждущая почта во власти брокера: при выключенном rabbitmq-persistent падение брокера уносит с собой все ожидающие повторы. И ожидание приблизительно по построению — задержка собирается из степеней двойки, поэтому письмо получает не заданный промежуток повтора, а ближайшую сумму.