Kafka Streams - Реализация объединения с использованием процессора Api - PullRequest
0 голосов
/ 26 ноября 2018

Я знаю, что соединения могут быть выполнены с использованием API DSL.Нам нужно использовать процессор api по разным причинам.

Как реализовать присоединение к потокам, используя процессор api.Некоторые идеи у меня были, но я не думаю, что они правы.

  1. Один процессор с несколькими исходными темами.Базовый объект для интерфейса процесса, а затем приведение к правильному типу внутри метода процесса.

  2. Два процессора, каждый со своей собственной темой источника.Каждый процессор получает доступ только для чтения к хранилищу состояний других процессоров (если это возможно).

Любые идеи - я нашел реализацию соединения в KStreamImpl, но у меня возникли проблемы при выполнении.Возможно, объяснение того, как DSL это делает?

1 Ответ

0 голосов
/ 26 ноября 2018

Возможны обе реализации, которые вы предлагаете.Сам Kafka Stream использует 5 процессоров для реализации потокового соединения:

source1 ---> "state maintainer 1" --> "joiner 1" ----+
                      |                   |          |
                   updates          "join lookups"   |
                      |                   |          +-----+
                      |            +------+                |
                      v            |                       v
                  "state 1" <------|------+             "merger" -->
                                   |      |                ^
                  "state 2" <------+      |                |
                      ^                   |          +-----+
                      |                   |          |
                   updates          "join lookups"   |
                      |                   |          |
source2 ---> "state maintainer 2" --> "joiner 2" ----+

Левый и правый конвейер симметричны.Оба имеют «сопровождающего состояния» и «столяра» Processor.«Государственный мейнтейнер» имеет право на запись в штат.«Столяр» как доступ для чтения к другому состоянию.В качестве последнего шага оба потока результатов объединения объединяются.

...