Сообщение можно потерять до подтверждения публикации, при недолговечной очереди/сообщении, раннем ack или политике удаления. Защита требует publisher confirms, корректных acknowledgements и выбранной модели хранения.
В каких сценариях RabbitMQ может потерять сообщения и как этого избежать?
Сообщение можно потерять до подтверждения публикации, при недолговечной очереди/сообщении, раннем ack или политике удаления. Защита требует publisher confirms, корректных acknowledgements и выбранной модели хранения.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сообщение можно потерять до подтверждения публикации, при недолговечной очереди/сообщении, раннем ack или политике удаления. Защита требует publisher confirms, корректных acknowledgements и выбранной модели хранения.
После сетевого сбоя publisher повторяет неподтверждённые сообщения, поэтому потребитель должен выдерживать дубликаты. Ack отправляют после устойчивого бизнес-эффекта, а не до него. Проверяют маршрутизацию и unroutable-публикации, TTL, max-length, reject и dead-letter настройки. Для отказа узла выбирают реплицируемый тип очереди и контролируют доступность большинства. Даже надёжный брокер не создаёт атомарность с вашей БД: для связки записи и публикации нужен согласованный механизм, например outbox.
Источник: www.rabbitmq.com.