我需要加入3个Kafka主题。将使用内部联接添加前两个主题A和B,因为消息键相同,并使用与B相同的POJO生成新的Kafka流。现在,使用此累积流,我需要加入另一个主题C,并且需要对输出进行分组基于C中存在的字段。
到目前为止,我对此有以下解决方法:
KStream-前两个主题(A和B)的KStream内部联接 是否可以不针对任何主题发布此累积的输出,并且仍然可以在下面使用它
KStream-KStream(在累积流和主题C之上)
您能否提出一个更好的方法或我可以在Java中实现类似实现的任何示例。
答案 0 :(得分:0)
您可以使用两个连续的联接:
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");