两个Kafka Stream Ktable加入操作两次发送消息

时间:2018-03-07 09:30:26

标签: apache-kafka apache-kafka-streams

我正在尝试加入两个Ktable流,似乎作为JOIN操作的输出,我得到的输出相同的消息两次。似乎值Joiner在此操作期间被调用两次。

让我知道如何解决这个问题,以便只发出一条消息作为Join操作的输出。

KTable<ID, Message> joinedMsg = msg1.join(msg2, new MsgJoiner());

由于两个KTable(msg1和msg2)之间的JOIN,我收到两条完全相同的消息。

1 个答案:

答案 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