как указывать в Кафка какому микросервису адресовано сообщение?
я новичок в Кафка. Теории изучил много, но на практике уже не понимаю как лучше с кафкой работать.
как указывать в Кафка какому микросервису адресовано сообщение, если все микросервисы читают из общей очереди?
Или создавать для каждого сервиса отдельный топик, с которого будет читать только один микросервис?
Ответы (1 шт):
Автор решения: asanisimov
→ Ссылка
Если все микросервисы будут работать с одинаковыми сообщениями ( микросервис А ждет email'a, микросервис Б ждет email'a и микросервис В ждет email'a) то не надо разбивать на разные топики. Совсем не зачем дублировать сообщения в разные темы.
- Если Вы ждете, что все микросервисы должны обработать все сообщения из топика то в каждом микросервисе поднимаете
consumerсо своейgroup.id. Именно группа хранитoffsetтопика. Поэтому каждый микросервис с уникальной группой будет читать топик обособленно от других. - Если микросервисы должны читать опеределенные сообщения из топика то есть много вариантов, как пример - разбить сообщения по ключу на партиции и какждому сервису сказать читать определенную партицию. Но тут нужно правильно продумать ключ партиционирования и кол-во партиций(в работе кол-во партиций уже нельзя будет уменьшить, только увеличить). Так же можно прописать какой то флаг в
headersпо которому сервис будет решить обрабатывать сообщения или нет (но читать он будет все).
Если микросервисы ждут разные сообщение, то конечно они должны быть в разных темах)