Kafka или RabbitMQ
Вопрос
Событие «заказ оплачен» должны читать склад, уведомления и аналитика, а аналитике иногда нужно перечитать события за прошлую неделю. Что лучше подходит?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- RabbitMQ: сообщение удаляется после подтверждения, это экономит место
- Kafka: лог хранится заданное время, группы читают и перечитываютправильный ответ
- Redis Pub/Sub: самый быстрый, подписчики получат событие сразу
- Очередь в таблице PostgreSQL с флагом «обработано» на каждого
Разбор
Kafka хранит сообщения в логе независимо от прочтения, у каждой группы свой offset, поэтому три сервиса читают одно событие независимо, а аналитика может сбросить offset назад. В RabbitMQ после ack сообщение удаляется, перечитать неделю нельзя. Redis Pub/Sub не хранит сообщения: если подписчик офлайн, он их пропустит. Таблица в PostgreSQL возможна для малых объёмов, но перечитывание и независимые читатели придётся писать самому.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.