Ядовитое сообщение крутит очередь по кругу
Ночью очередь orders.process выросла с нуля до 400 тысяч сообщений. В логах воркеров одно и то же: одно и то же сообщение вызывает исключение при разборе тела, воркер не подтверждает его, брокер возвращает сообщение в очередь и отдаёт снова — сразу же, без задержки. Полезная работа почти не идёт, нагрузка на базу выросла втрое из-за постоянных повторов.
Какой набор мер корректно закрывает эту ситуацию?
- Подтверждать любое сообщение независимо от результата обработки: очередь перестанет расти, а сбои разберём по логам
- Считать попытки, повторять с растущей задержкой и после лимита отправлять сообщение в dead-letter очередь
- Добавить воркеров: с большей пропускной способностью очередь разберётся сама и вернётся к норме без правок в коде
- Очистить очередь и перезапустить воркеры, а чтобы не повторилось — обернуть обработчик в `try/catch` и глушить ошибки
