几乎所有的kafka流文档都说它使用RocksDB作为状态存储。我创建了一个简单的流生成器,下面的示例效果很好。 我唯一的困惑是 - 我没有指定任何状态存储。它是如何工作的? .如果kafka在内部创建了某个地方,它在哪里?
builder.stream("my-topic-1")
.groupByKey(Grouped.with(Serdes.String(), Serdes.String()))
.count(Materialized.with(Serdes.String(), Serdes.Long()))
.toStream()
.to("my-topic-2");
注意:我可以在kafka中看到“changelog”主题。但我想查看文件系统中的默认 RocksDB 位置。
RocksDB 只是持久存储的默认设置。还有 InMemoryStateStore
从 Kafka 2.7 开始,持久存储的默认文件系统位置是
/tmp/kafka-streams
,但您可以覆盖 state.dir
https://kafka.apache.org/35/documentation/streams/developer-guide/config-streams.html