zahod5277
@zahod5277
PHP-developer

Как организовать очередь сообщений в Kafka?

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

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

Вопрос - норм логика или дичь какая-то?
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
@holodoz
Для такого используется Kafka Streams, два потока джойнятся по ключу, можно записывать результат в третий поток или отправлять в БД. Вот описание краткое, чтобы было понятно, куда копать:
https://kafka-school.ru/blogs/kafka-stream-unit/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Jeer
@Jeer
уверенный пользователь
Ну это асинхронная обработка, типа норма ) я сносил внешние ключи в базе, прописывал правила в своей ORM. Наверно более правильный вариант делать таблицу входящих сообщений, типа инбокс, и уже с него пытаться распихивать по нормальным таблицам, если не записалось - делать ретраи через паузы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы