我有一个 Kafka 流转换器,它的功能类似于窗口器:它将状态累积到transform()
的状态存储中,然后在punctuate()
期间将其转发到输出主题中,状态存储主题分区键与输入主题相同。 在punctuate()
期间,我希望每个 StreamThread 只迭代它自己的状态存储分区,以尽量减少从支持的 kafka 主题读取的数据量。但我唯一能得到的迭代器是通过
org.apache.kafka.streams.state.ReadOnlyKeyValueStore<K,V>.all()
它遍历整个状态存储。
有没有办法"分配状态存储的分区"并使punctuate()
仅在分配的分区上进行迭代?
我猜,ReadOnlyKeyValueStore<K,V>.all()
做你想做的事。请注意,整体状态分片到多个存储中,每个分区一个分片/存储。all()
不会遍历"其他分片"。"all"的意思是"所有本地的",即来自单个分区的分片的所有内容。