В каких сценариях RabbitMQ может потерять сообщения и как этого избежать?

Сообщение можно потерять до подтверждения публикации, при недолговечной очереди/сообщении, раннем ack или политике удаления. Защита требует publisher confirms, корректных acknowledgements и выбранной модели хранения.

Короткий ответ

Что ответить на собеседовании

Сообщение можно потерять до подтверждения публикации, при недолговечной очереди/сообщении, раннем ack или политике удаления. Защита требует publisher confirms, корректных acknowledgements и выбранной модели хранения.

Подробный разбор

Ответ с пояснениями

Сообщение можно потерять до подтверждения публикации, при недолговечной очереди/сообщении, раннем ack или политике удаления. Защита требует publisher confirms, корректных acknowledgements и выбранной модели хранения.

После сетевого сбоя publisher повторяет неподтверждённые сообщения, поэтому потребитель должен выдерживать дубликаты. Ack отправляют после устойчивого бизнес-эффекта, а не до него. Проверяют маршрутизацию и unroutable-публикации, TTL, max-length, reject и dead-letter настройки. Для отказа узла выбирают реплицируемый тип очереди и контролируют доступность большинства. Даже надёжный брокер не создаёт атомарность с вашей БД: для связки записи и публикации нужен согласованный механизм, например outbox.

Источник: www.rabbitmq.com.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее