我正在尝试加入两个Ktable流,似乎作为JOIN操作的输出,我得到的输出相同的消息两次。似乎值Joiner在此操作期间被调用两次。
让我知道如何解决这个问题,以便只发出一条消息作为Join操作的输出。
KTable<ID, Message> joinedMsg = msg1.join(msg2, new MsgJoiner());
由于两个KTable(msg1和msg2)之间的JOIN,我收到两条完全相同的消息。
答案 0 :(得分:3)
通常在启用缓存时会注意到此行为。
如果两个表中的相同键都有更新,则每个表都会独立刷新,因此每个表都会触发连接,因此您可以获得同一个键的两个结果。
即。有两个表: table1 和 table2 。以下是table1和table2中收到的输入数据:
A:1:A
在提交间隔刷新存储时。它为table1刷新商店,触发连接并生成A:1:A
。然后它将刷新table2,触发连接并生成cache.max.bytes.buffering=0
您可以尝试通过设置{{1}}来禁用缓存。
P.S。 KTable / KTable连接中已有open issue。