Что дают publisher confirms в RabbitMQ?
- Как убедиться, что RabbitMQ принял сообщение?
Publisher confirms — брокер подтверждает издателю, что сообщение принято (а для persistent в durable-очереди — записано на диск). Без них о сохранности отправки судить нельзя.
- Подтверждения асинхронные, пакетами; nack — нужно повторить
- Для надёжности: durable exchange и queue, persistent сообщения, confirms, quorum queues
- Транзакции AMQP — медленная альтернатива
А ещё Неподтверждённые хранят в памяти и повторяют — значит, нужна идемпотентность потребителя
Подробно
По умолчанию basicPublish ничего не подтверждает: метод вернулся — это ещё не значит, что брокер принял сообщение и (для durable-очереди) записал его. Publisher confirms включают асинхронные ack/nack от брокера на каждое опубликованное сообщение, так продюсер узнаёт об успехе или сбое и может переслать. Отдельно есть publisher returns (mandatory=true): брокер вернёт сообщение, которое не попало ни в одну очередь (нет подходящего binding). Confirms подтверждают приём брокером, но не доставку до consumer-а.
Что хотят услышать
- Что подтверждается и когда.
- Связка с durable и persistent.
- Повтор при nack и дубли.
Частые ошибки
- Считать, что успешный basicPublish = сообщение сохранено.
- Путать confirm (брокер принял) с ack потребителя (обработал).
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Гарантию, что сообщение прочитано и подтверждено хотя бы одним consumer-ом
- ✓Подтверждение от брокера, что сообщение принято и сохранено
- ✗Шифрование сообщения при передаче
- ✗Автоматическое создание очереди под сообщение
Что спросят дальше
- Чем publisher returns отличается от confirms?
- Зачем нужны durable-очереди вместе с confirms?
Разбор темы
- RabbitMQ, SQS и классические очереди
Модель exchange/binding/queue, ack/nack и publisher confirms, prefetch, DLQ через DLX, отложенные сообщения, SQS Standard vs FIFO и visibility timeout.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.