KStreams - KTable
联接以一种非常简单的方式工作:每次在流上发出新样本时,都会在表上执行按键查找。
这可以在瞬态阶段产生意外行为吗?我们有这样的拓扑结构:
KStream
A我们执行selectKey将其转换为Stream A1 KStream
B,将其变成KTable B1 在启动时,我们在A上发布两条记录,在B上发布两条记录,因此在A上的selectKey和B上的groupBy + reduce之后,密钥将匹配。但是,我们注意到有时A1和B1之间的内部连接失败的样本,我们失去了一些我们期望的输出。
确保没有更新丢失的正确拓扑是什么?
答案 0 :(得分:2)
KStream-KTable加入同步是最好的努力。我们致力于改进,为1.2版本提供更好的保证。 Atm,你可以做的不多。
如果您需要严格保证,则需要使用transform()
而不是join()
实现自己的流表连接运算符。您可以将KTable存储连接到Transformer
,并将自定义逻辑放在适当位置以进行连接查找。