Вступить в клуб →
средняявопросКэш, очереди и микросервисы

Повторная доставка сообщения привела к двойному списанию

Потребитель обрабатывает сообщение PaymentRequested и списывает деньги. В инциденте у части клиентов деньги списались дважды: обработка проходила успешно, но подтверждение (ack) не доходило до брокера из-за сетевого сбоя, и брокер доставлял сообщение повторно.

Как правильно решить проблему?

  • Отправлять ack сразу при получении сообщения, до выполнения обработки
  • Увеличить таймаут подтверждения, чтобы повторных доставок не возникало
  • Сделать обработчик идемпотентным: хранить идентификатор уже обработанного сообщения и при повторе не списывать второй раз
  • Включить режим доставки ровно один раз, тогда дубликаты будут исключены на стороне брокера и менять обработчик не придётся вовсе

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела