Как выполнить повторяемую не транзакционную сервисную оркестровку через KAFKA - PullRequest
0 голосов
/ 11 февраля 2020

Привет, у меня проблема с выяснением того, как сценарий classi c SOA будет проецироваться поверх обработки KAFKA.

У меня есть следующий случай. У меня есть заказ, который, скажем, этот порядок содержит несколько разделов Данные пользователя, технические данные и спецификации. Когда событие изменения или создания получено, копия полного заказа отправляется на уровень интеграции. Что мне нужно, это выполнить оркестровку на 3 службы SpecificationService, TecnicalDataService и Customer Service. Служба поддержки клиентов и TechynicalDataService могут выполняться независимо друг от друга, но только после успешного завершения SpecificationService.

Если мы преобразуем проблему в классическое решение рабочего стола. Это будет означать рабочий стол со следующими столбцами OrderID | Время события | IsProcessed | isSpecificationSent | isCustomerdataSent | Технические данные отправлены

То, что я думал сделать с KAFKA, это иметь 3 темы:

  1. OrderEvent topi c,
  2. retry topi c
  3. Успешно обработанные topi c

Я думал о двух направлениях: 1) Используйте API Consumer / Producer. 2) Попробуйте использовать API потоков и обработки.

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

Я думал использовать StateStore, который совместно используется двумя потоками: поток обработки событий и поток обработки повторных попыток topi c. , Но из того, что я вижу, это невозможно.

Как организовать организацию обработки / обслуживания вокруг KAFKA, а не вокруг рабочего стола в БД?

...