Rabbit или Kafka?

- этот вопрос я задаю на собеседовании с продолжением: а что бы вы выбрали для нашей задачи?

Названия знают все. Объяснить выбор получается у немногих.

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

Здесь хватит RabbitMQ. В нём сообщение уходит одному получателю: сервис забрал его из очереди, и оттуда оно удаляется. На два действия делаем две очереди, и всё.

Потом усложняю. Событие о заказе нужно ещё складу, аналитике и каталогу, а аналитика хочет перечитать события за прошлую неделю.

Тут уже Kafka. Сообщение лежит в топике, подписаться на него может сколько угодно сервисов, и каждый читает со своего оффсета, при необходимости отматывает назад.

На Rabbit такое тоже собирают, только каждому подписчику нужна своя очередь и своя доставка. Пять сервисов - пять копий сообщения.

Хороший ответ начинается с вопросов к задаче: сколько получателей, нужна ли история, что будет, если сообщение придёт дважды. Инструмент выбирается уже после них.

А вы с какого вопроса начали бы выбор?

#rabbit #kafka

Rabbit или Kafka? | Сетка — социальная сеть от hh.ru