Kafka Streams是否可以配置为等待KTable加载?

时间:2019-06-12 06:55:59

标签: apache-kafka apache-kafka-streams

我正在使用物化的KTable来与我的KStream进行左连接(而流是在左侧)。

但是,它似乎可以立即处理,而无需等待KTable的当前版本加载。。

我在KTable的源主题中有很多值,并且当我启动应用程序时,很多联接失败了(嗯,不是真的,因为它是左联接)。

我可以延迟启动它,以便等待初始主题加载吗?

2 个答案:

答案 0 :(得分:2)

在Kafka Streams中处理是时间同步的。因此,基于记录时间戳顺序处理表输入主题和流输入主题。从语义上讲,这是合理的,因为在流表联接中,您不希望将流记录与旧版本或较新版本的KTable联接,而要基于流记录来选择正确的版本。时间戳。

如果您的数据未正确加上时间戳,则可以尝试通过builder.table(..., Consumed.with(...))指定自定义时间戳提取器,以返回确保正确行为的时间戳(即,是否小于第一个流记录的时间戳?)

请注意,正确的时间戳同步需要Kafka Streams 2.1。旧版本仅以尽力而为的方式同步时间,可能无法提供您想要的行为。有关更多详细信息,请参阅KIP-353。

答案 1 :(得分:1)

您可以使用GlobalKTable。等待所有值同步。