Как процессор потокового процессора (API низкого уровня) получает данные из темы? - PullRequest
1 голос
/ 19 марта 2019

Я новичок в потоковом процессоре kafka и натолкнулся на ключевую концепцию "топологии".

Я создал процессор исходного кода, который читает из «темы-источника» следующим образом:

Topology topology = new Topology();
topology.addSource("SOURCE", "source-topic");

Приведенный выше фрагмент создаст (если я правильно понимаю) процессор исходного потока с именем "SOURCE" и будет прослушивать кафку по теме "source-topic".

Я не написал никакого кода для этого потокового процессора "SOURCE", как он может получать сообщения из темы kafka? Это «особый» тип потокового процессора, который заботится самим API kafka stream?

Может кто-нибудь помочь мне понять это?

Ответы [ 2 ]

2 голосов
/ 19 марта 2019

A топология начинается с исходного узла для получения данных от Kafka, затем содержит группу процессорных узлов для выполнения преобразований и, наконец, заканчивается узлом приемника для записи преобразованных данных в Kafka.

addSource() создаст исходный узел в вашей топологии. Исходный узел потребляет записи из указанной темы и передает их следующим узлам в топологии. Это не делает никакой другой логики. Под прикрытием исходный узел запустит Kafka Consumer для получения записей.

API Kafka Streams позволяет вам сосредоточиться на своей логике (в процессорах) вместо того, чтобы иметь дело с потребителями и производителями.

0 голосов
/ 19 марта 2019
topology.addSource("SOURCE", "source-topic");

Над «ИСТОЧНИКОМ» просто название.Вы можете обратиться к классу Topology здесь для получения более подробной информации.

Как это работает внутренне - Когда создается топология, вам нужно определить источник, приемник и процессор, используя следующие методы:

addSource(), addSink() и addProcessor()

Эти методы добавляют узел процессора в топологию и внутренне вызывают класс InternalTopologyBuilder для построения графика топологии.

При использовании метода streams.start() он вызывает обработку топологии.

...