Kafka Streams WindowStore获取记录顺序

时间:2019-05-10 00:10:03

标签: apache-kafka apache-kafka-streams

用于WindowStoreReadOnlyWindowStore方法fetch(K key, Instant from, Instant to)的Kafka Streams 2.2.0文档指出:

  

对于每个键,迭代器保证窗口的排序,从开始   从最早/最早的窗口到最新/最新的窗口。

没有其他任何获取方法说明此情况(已弃用的fetch(K key, long from, long to)除外),但是它们提供相同的保证吗?

此外,是否可以保证给定窗口内的记录排序?还是取决于底层的哈希集合(我假设)的实现和可能的哈希冲突的处理?

我还要注意,我们在WindowStore设置为retainDuplicates()的情况下构建了true。因此,一个键在一个窗口中将有多个条目。除非我们使用错了我想这将是一个不同的问题...

1 个答案:

答案 0 :(得分:0)

其他方法没有顺序保证,因为顺序取决于序列化密钥的字节顺序。对于Kafka Streams的这种排序,很难推理,因为序列化程序是由用户提供的。

  

我还应注意,我们在将WindowDuplicates()设置为true的情况下构建了WindowStore。因此,一个键在一个窗口中将有多个条目。除非我们使用错了我想这将是一个不同的问题...

您使用的是错误的:)-默认情况下,您可以为同一窗口存储不同的键。如果启用retainDuplicates(),则可以为同一窗口多次存储相同键。