235 вопросов по RabbitMQ с технических собеседований
235 вопросов1634 компании353 технологии
Что проверяют на интервью
Как устроена подборка
На странице собраны вопросы по RabbitMQ — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: rabbitmq, backend, kafka.
Kafka прежде всего хранит распределённый журнал с offsets и повторным чтением, а RabbitMQ предоставляет маршрутизацию и очереди сообщений. Выбор зависит от модели потребления и требований, не только от скорости.
Quorum Queues используют Raft: лидер согласует реплицируемые изменения с большинством. Старые Mirrored Queues имели другой механизм репликации; классическое зеркалирование удалено в RabbitMQ 4.0.
RabbitMQ часто удобен для очередей рабочих задач и гибкой маршрутизации, Kafka — для сохраняемого потока событий с независимыми потребителями и replay. Выбор зависит от требований, а не только объёма.
Split-brain возникает, когда разделённые части кластера продолжают действовать независимо и расходятся по состоянию. Исторический pause_minority приостанавливал меньшинство ради согласованности.
Push отправляет данные потребителю по инициативе брокера, pull позволяет потребителю запрашивать порции. Управление потоком нужно в обоих случаях; сама модель не определяет весь расход памяти брокера.
Kafka удобна как сохраняемый журнал событий с повторным чтением и независимыми потребителями. RabbitMQ часто выбирают для очередей задач и гибкой маршрутизации сообщений.
RabbitMQ обычно используют как брокер маршрутизируемых сообщений и очередей задач, Kafka — как распределённый журнал событий с partitions, offsets и независимым повторным чтением.
При аварии риск зависит от persistence и подтверждений, а не только от названия брокера. Redis без подходящей долговечности может потерять недавно принятые задачи; RabbitMQ тоже требует правильной настройки.
RabbitMQ обычно доставляет сообщения активным consumers с учётом prefetch; Kafka consumer сам запрашивает порции данных. Нагрузка определяется также батчами, подтверждениями и скоростью клиентов.
Надёжная схема: сохранить чек и outbox-событие в одной транзакции, доставить его через RabbitMQ, а REST-проверку выполнять с ограниченными повторами и идемпотентностью.
Веб-приложение кладёт задачу в брокер, отдельный Celery worker её исполняет. Падение веб-процесса не равно падению worker; повторную доставку нужно считать нормальным событием.
Prefetch Count ограничивает число сообщений, доставленных потребителю, но ещё не подтверждённых. Слишком малое значение оставляет простаивающие ресурсы, слишком большое ухудшает баланс и расход памяти.