【问题标题】:How stream processor (low level API) source processor gets data from topic?流处理器(低级 API)源处理器如何从主题中获取数据?
【发布时间】:2019-03-19 09:17:26
【问题描述】:

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

我创建了从这样的“源主题”读取的源处理器:

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

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

我没有为这个“SOURCE”流处理器编写任何代码,它如何能够从 kafka 主题中获取消息?它是由 kafka 流 API 本身处理的“特殊”类型的流处理器吗?

谁能帮我理解这个?

【问题讨论】:

标签: apache-kafka apache-kafka-streams


【解决方案1】:

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

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

Kafka Streams API 使您能够专注于您的逻辑(在处理器中),而不是与消费者和生产者打交道。

【讨论】:

    【解决方案2】:
    topology.addSource("SOURCE", "source-topic");
    

    “SOURCE”上方只是一个名称。您可以在此处参考Topology 课程以获取更多详细信息。

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

    addSource()addSink()addProcessor()

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-07
      • 2018-04-07
      • 2011-01-27
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多