【问题标题】:Spring and Kafka: Join 3 Kafka topics to generate output Kafka streamsSpring 和 Kafka:加入 3 个 Kafka 主题以生成输出 Kafka 流
【发布时间】:2019-04-14 22:26:26
【问题描述】:

我需要加入 3 个 Kafka 主题。前两个主题 A 和 B 将使用内部连接添加,因为消息密钥相同,并生成一个新的 Kafka 流,其 POJO 与 B 相同。现在有了这个累积的流,我需要加入另一个主题 C,我需要对输出进行分组基于字段,该字段存在于 C 中。

到目前为止,我有以下方法:

KStream - 前两个主题(A 和 B)的 KStream 内连接 是否有可能不在任何主题上发布此累积输出,并且仍然可以在下面使用它

KStream - KStream(累积流和主题C之上)

您能否建议一种更好的方法或任何我可以在 java 中查看类似实现的示例。

【问题讨论】:

    标签: java apache-kafka apache-kafka-streams spring-kafka


    【解决方案1】:

    您可以使用两个连续的连接:

    KStream streamAB = streamA.join(streamB, ...);
    // either:
    KStream streamABC = streamA.selectKey(...) // set to the key as in streamC
                               .join(streamC, ...);
    // or:
    KStream streamCNew = streamC.selectKey(...); // set to the key as in streamAB
    KStream streamABC = streamA.join(streamCnew, ...);
    // or:
    KStream streamCNew = streamC.selectKey(...); // set to a new join key
    KStream streamABC = streamA.selectKey(...) // set to a new join key
                               .join(streamC, ...);
    
    streamABC.selectKey(/* extract grouping field and set as key */).to("outputTopic");
    

    【讨论】:

    • 谢谢@Matthias。我对Kafka Stream很陌生,请您详细说明解决方案。如果可能的话,你能指点我几个例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    相关资源
    最近更新 更多