为什么必须在kafka中未启用全局表的日志记录?
代码:
if (loggingEnabled) {
throw new TopologyException("StateStore " + storeName + " for global table must not have logging enabled.");
}
当我重启我的kafka应用程序时,globalstore中的所有数据存储都变得干净了。我怎么能忍受呢?
答案 0 :(得分:2)
GlobalKTable
使用其输入主题来确保容错。因此,我不确定您的意思
当我重启我的kafka应用程序时,globalstore中的所有数据存储都变得干净了。
只要正确配置了输入主题并启用日志压缩,即使在本地删除状态,启动时也会重新创建GlobalKTable
状态。
启用日志记录没有意义,因为每个KafkaStreams
实例都加载整个GlobalKTable
数据(即,该数据将广播到所有实例)。尽管每个分片使用一个主题分区,但Changelog主题专为 shared 状态而设计。因此,这两个概念并不一致,却相互矛盾。