我是kafka流处理器的新手,并且遇到了“拓扑”的关键概念。
我创建了源处理器,该处理器从“源主题”中读取,如下所示:
Topology topology = new Topology();
topology.addSource("SOURCE", "source-topic");
上面的代码片段将创建(如果我的理解是正确的)一个名为“ SOURCE”的源流处理器,并将侦听kafka主题“ source-topic”。
我没有为此“ SOURCE”流处理器编写任何代码,它如何从kafka主题获取消息?卡夫卡流API本身会照顾这种“特殊”类型的流处理器吗?
有人可以帮助我理解吗?
答案 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()
方法上,它调用拓扑处理。