KStreams - KTable 启动阶段

KStreams - KTable startup phase

KStreams - KTable 连接以一种非常简单的方式工作:每次在流上发出新样本时,都会在 table.

上执行按键查找

这会导致瞬态阶段的意外行为吗?我们有这样的拓扑结构:

  1. 一个 KStream A 我们执行 selectKey 将其转换为 Stream A1
  2. 一个KStream B,我们将其分组然后归约,将其变成KTable B1

启动时,我们在A上发布两条记录,在B上发布两条记录,这样A上的selectKey和B上的groupBy+reduce之后key就会匹配上。然而,我们注意到有时 A1 和 B1 之间的内部连接失败的样本,我们反而丢失了一些我们期望的输出。

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

KStream-KTable 尽最大努力加入同步。我们致力于改进,为 1.2 版本提供更好的保证。 atm,你能做的不多了

如果您需要严格保证,则需要使用 transform() 而不是 join() 来实现您自己的 stream-table 连接运算符。您可以将 KTable 存储连接到 Transformer 并为连接查找放置自定义逻辑。