用于WindowStore
和ReadOnlyWindowStore
方法fetch(K key, Instant from, Instant to)
的Kafka Streams 2.2.0文档指出:
对于每个键,迭代器保证窗口的排序,从开始 从最早/最早的窗口到最新/最新的窗口。
没有其他任何获取方法说明此情况(已弃用的fetch(K key, long from, long to)
除外),但是它们提供相同的保证吗?
此外,是否可以保证给定窗口内的记录排序?还是取决于底层的哈希集合(我假设)的实现和可能的哈希冲突的处理?
我还要注意,我们在WindowStore
设置为retainDuplicates()
的情况下构建了true
。因此,一个键在一个窗口中将有多个条目。除非我们使用错了我想这将是一个不同的问题...
答案 0 :(得分:0)
其他方法没有顺序保证,因为顺序取决于序列化密钥的字节顺序。对于Kafka Streams的这种排序,很难推理,因为序列化程序是由用户提供的。
我还应注意,我们在将WindowDuplicates()设置为true的情况下构建了WindowStore。因此,一个键在一个窗口中将有多个条目。除非我们使用错了我想这将是一个不同的问题...
您使用的是错误的:)-默认情况下,您可以为同一窗口存储不同的键。如果启用retainDuplicates()
,则可以为同一窗口多次存储相同键。