Выбор ответа Middle Очереди и события спрашивают часто обновлено

Kafka или RabbitMQ

Вопрос

Событие «заказ оплачен» должны читать склад, уведомления и аналитика, а аналитике иногда нужно перечитать события за прошлую неделю. Что лучше подходит?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

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

Варианты ответа

  1. RabbitMQ: сообщение удаляется после подтверждения, это экономит место
  2. Kafka: лог хранится заданное время, группы читают и перечитываютправильный ответ
  3. Redis Pub/Sub: самый быстрый, подписчики получат событие сразу
  4. Очередь в таблице PostgreSQL с флагом «обработано» на каждого

Разбор

Kafka хранит сообщения в логе независимо от прочтения, у каждой группы свой offset, поэтому три сервиса читают одно событие независимо, а аналитика может сбросить offset назад. В RabbitMQ после ack сообщение удаляется, перечитать неделю нельзя. Redis Pub/Sub не хранит сообщения: если подписчик офлайн, он их пропустит. Таблица в PostgreSQL возможна для малых объёмов, но перечитывание и независимые читатели придётся писать самому.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.