Apache kafka Kafka streams应用程序仍在尝试创建changelog主题,尽管我正在设置优化属性

Apache kafka Kafka streams应用程序仍在尝试创建changelog主题,尽管我正在设置优化属性,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,下面是我正在使用的代码片段 `streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG,“wordcount实时测试”); streamsConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG,“brokerIP:port”); streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG,Serd

下面是我正在使用的代码片段

`streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG,“wordcount实时测试”); streamsConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG,“brokerIP:port”); streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG,Serdes.String().getClass().getName()); streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG,Serdes.String().getClass().getName()); streamsConfiguration.put(StreamsConfig.TOPOLOGY\u优化,StreamsConfig.OPTIMIZE

StreamBuilder=新的StreamBuilder(); KStream streamData=builder.stream(inputTopicName)

groupByKey(Grouped.with(jsonSerde,jsonSerde)) .合计( //一些转变 );

KafkaStreams KafkaStreams=新的KafkaStreams(builder.build(streamConfiguration),streamConfiguration); `


我检查confluent页面的优化方法,并遵循建议的更改。但它仍在试图生成changelogTopic。

我理解您在这里的困惑,但changelog主题的优化只针对
KTable
操作。例如:

KTable someTable=builder.table(“主题”);
启用优化后,Kafka Streams将使用
KTable
的源主题作为变更日志主题

如果不希望Kafka Streams为聚合创建变更日志主题,则需要使用
Materialized.withLoggingDisabled()
config对象显式禁用它:

streamData.groupByKey(Grouped.with(jsonSerde,jsonSerde)).aggregate(初始值设定项、聚合器、物化的.as(“存储名称”).withloggingsdisabled();
以上只是一个示例;如果需要,您还可以使用配置键和值
Serdes
。但底线是防止需要使用
物化的更改日志主题。withLoggingDisabled()


此外,您还可以使用配置更改日志主题。的Javadoc提供了一个使用
StoreBuilder

的简短示例,感谢您的回答!!注意:如果启用优化,并且未创建源KTable更改日志主题,则源主题用于提供容错。相反,如果禁用作为des的日志记录,则在答案中,您为相应的KTable禁用了容错功能!禁用变更记录不是一种优化,而是更改了您的容错保证!