Кафка / Connect / Потоки для обновления поля БД - PullRequest
0 голосов
/ 28 мая 2018

Моя проблема заключается в следующем:

У меня есть 2 темы kafka:

  • customer-purchase: содержит информацию о покупке, сделанной клиентом, с полем, указывающим статусравный NEW.
  • purchase-status: содержит события, обновляющие последний статус покупки, например, IN TRANSIT, DELIVERED ...

Использование kafka,kafka connect и / или kafka streams, я хотел бы закончить с базой данных SQL, которая содержит покупку, обогащенную самой последней информацией о состоянии.

В мире БД это привело бы к простому запросу UPDATE.

Теоретически, я мог бы написать 1 потребителя (или 1 приемник подключения) для customer-purchase, где все просто выгружается в БД, и 1 потребителя для purchase-status, который вызвал бы запрос БД UPDATE, но мне было интересно, есть ли более кафки-подобный способ сделать это.

Примечание: использование kafka-streams и присоединение к двум темам показалось мне немного излишним, так как на самом деле мне не нуженприсоединиться, но простое обновление поля.Но я могу быть совершенно неправ в этом предположении!

1 Ответ

0 голосов
/ 29 мая 2018

Теоретически, я мог бы написать 1 потребителя (или 1 приемник подключения) для покупки покупателем, где все просто выгружается в БД, и 1 покупатель для статуса покупки, который вызвал бы запрос БД ОБНОВЛЕНИЕ, ноМне было интересно, есть ли более кафка-подобный способ сделать это.

Это почти то же, что фактически делает объединение таблиц в Kafka Streams.

В вашем примереВы смотрите на это сквозь призму «обработки по одному событию за раз».Соединения таблица-таблица отправляют такие «обновления» очень похоже на то, что вы описали.См. Семантику объединения в https://kafka.apache.org/documentation/streams/developer-guide/dsl-api.html#ktable-ktable-join.

Примечание: использование kafka-streams и присоединение к двум темам показалось мне немного излишним, поскольку на самом деле мне не нужно объединение, а просто обновлениеполе.Но я могу быть совершенно неправ в этом предположении!

Вы упомянули, что рассматривали возможность объединения двух тем, но решили отказаться от этого.Почему так?Это кажется хорошей идеей, а также идиоматичным для меня.Это также не сильно отличается от примера в мире БД: как бы вы выполнили шаг обогащения в «базе данных SQL, содержащей покупку, обогащенную самой последней информацией о состоянии»?Это будет операция соединения (см. Выше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...