Получить доступ

Что означает подтверждение (ack) сообщения в RabbitMQ?

JuniorSpring AMQP и RabbitMQRabbitMQ
Ещё спрашивают так:
  • Что такое подтверждение сообщения?
Коротко

Ack — сигнал брокеру, что сообщение обработано: до него сообщение считается невыполненным и при обрыве соединения вернётся в очередь другому потребителю.

  • Nack/reject — отказ: вернуть в очередь или отправить в DLX
  • В Spring AMQP режим AUTO подтверждает после успешного метода
  • Отсюда at-least-once и идемпотентность

А ещё Prefetch ограничивает число неподтверждённых

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Именно поэтому подтверждение отправляют после обработки, а не при получении: если потребитель упадёт посередине, брокер не получит подтверждения и передаст сообщение другому — работа не потеряется. Обратная сторона — при повторной доставке обработка должна выдерживать дубли. Отдельно существует подтверждение со стороны издателя, которое сообщает, что брокер принял сообщение на хранение, — это другая гарантия и другая сторона обмена.

Что хотят услышать

  • Смысл ack и что без него.

Частые ошибки

  • Подтверждать сообщение до фактической обработки.
  • Путать подтверждение потребителя с подтверждением издателя.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Потребитель сообщает брокеру, что сообщение обработано и его можно удалить из очереди
  • ✗Издатель подтверждает, что отправил сообщение
  • ✗Брокер подтверждает создание очереди
  • ✗Сообщение помечается как прочитанное, но остаётся в очереди навсегда

Что спросят дальше

  • Чем опасен возврат сообщения в очередь при постоянной ошибке?
  • Зачем нужен предварительный лимит выборки (prefetch)?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем