Kafka Streams-使用处理器Api实施联接

时间:2018-11-26 16:49:37

标签: apache-kafka-streams

我知道可以使用dsl api执行联接。出于各种原因,我们需要使用处理器api。

一个人将如何使用处理器api连接到流。我有一些想法,但认为不正确。

  1. 一个具有多个源主题的处理器。流程接口的基础对象,然后在流程方法内部强制转换为正确的类型。

  2. 两个处理器,每个处理器都有自己的源主题。每个处理器都具有对其他处理器状态存储的只读访问权限(如果可能)。

任何想法-我的确在KStreamImpl中找到了join实现,但是在跟踪时遇到了麻烦。也许是关于dsl是如何做的移植?

1 个答案:

答案 0 :(得分:2)

您建议的两种实现都是可能的。 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。 “状态维护者”具有对该状态的写访问权。 “ Joiner”作为对另一个状态的读取访问。最后一步,将两个联接结果流合并在一起。