流处理器(低级API)源处理器如何从主题获取数据?

时间:2019-03-19 09:17:27

标签: apache-kafka apache-kafka-streams

我是kafka流处理器的新手,并且遇到了“拓扑”的关键概念。

我创建了源处理器,该处理器从“源主题”中读取,如下所示:

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

上面的代码片段将创建(如果我的理解是正确的)一个名为“ SOURCE”的源流处理器,并将侦听kafka主题“ source-topic”。

我没有为此“ SOURCE”流处理器编写任何代码,它如何从kafka主题获取消息?卡夫卡流API本身会照顾这种“特殊”类型的流处理器吗?

有人可以帮助我理解吗?

2 个答案:

答案 0 :(得分:2)

topology从源节点开始,以从Kafka获取数据,然后包含一堆处理器节点以执行转换,最后以接收器节点结尾,以将转换后的数据写入Kafka。

addSource()将在您的拓扑中创建一个源节点。源节点使用指定主题中的记录,并将它们传递到拓扑中的下一个节点。它不执行任何其他逻辑。在后台,一个源节点将启动Kafka Consumer以获取记录。

通过Kafka Streams API,您可以专注于自己的逻辑(在处理器中),而不必与消费者和生产者打交道。

答案 1 :(得分:0)

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

“ SOURCE”上方只是一个名称。您可以在此处引用Topology类以了解更多详细信息。

内部如何工作-创建拓扑时,您需要使用以下方法定义源,接收器和处理器:

addSource()addSink()addProcessor()

这些方法将处理器节点添加到拓扑中,并在内部调用InternalTopologyBuilder类以构建拓扑图。

streams.start()方法上,它调用拓扑处理。