KStreams - KTable启动阶段

时间:2018-03-18 21:09:36

标签: apache-kafka apache-kafka-streams

KStreams - KTable联接以一种非常简单的方式工作:每次在流上发出新样本时,都会在表上执行按键查找。

这可以在瞬态阶段产生意外行为吗?我们有这样的拓扑结构:

  1. 一个KStream A我们执行selectKey将其转换为Stream A1
  2. 我们分组然后减少一个KStream B,将其变成KTable B1
  3. 在启动时,我们在A上发布两条记录,在B上发布两条记录,因此在A上的selectKey和B上的groupBy + reduce之后,密钥将匹配。但是,我们注意到有时A1和B1之间的内部连接失败的样本,我们失去了一些我们期望的输出。

    确保没有更新丢失的正确拓扑是什么?

1 个答案:

答案 0 :(得分:2)

KStream-KTable加入同步是最好的努力。我们致力于改进,为1.2版本提供更好的保证。 Atm,你可以做的不多。

如果您需要严格保证,则需要使用transform()而不是join()实现自己的流表连接运算符。您可以将KTable存储连接到Transformer,并将自定义逻辑放在适当位置以进行连接查找。