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



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

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

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

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

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

如果您的数据没有正确加盖时间戳,您可以尝试为 viabuilder.table(..., Consumed.with(...))指定自定义时间戳提取器,以返回确保正确行为的时间戳(即,可能小于第一个流记录的时间戳?

  • https://docs.confluent.io/current/streams/developer-guide/config-streams.html#streams-developer-guide-timestamp-extractor

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

  • https://cwiki.apache.org/confluence/display/KAFKA/KIP-353%3A+Improve+Kafka+Streams+Timestamp+Synchronization

Kafka 3.0 附带了更多时间戳同步改进:https://cwiki.apache.org/confluence/display/KAFKA/KIP-695%3A+Further+Improve+Kafka+Streams+Timestamp+Synchronization

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

相关内容

  • 没有找到相关文章

最新更新