簡體   English   中英

盡管我正在設置優化屬性,但 Kafka 流應用程序仍在嘗試創建更改日志主題

[英]Kafka streams application is still trying to create changelog topic though i am setting the optimization property

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

`streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-live-test"); streamConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "brokerIP:port"); streamConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); streamConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); 流配置.put( StreamsConfig.TOPOLOGY_OPTIMIZATION, StreamsConfig.OPTIMIZE );

StreamBuilder builder = new StreamBuilder(); KStream streamData = builder.stream(inputTopicName);

streamData.groupByKey(Grouped.with(jsonSerde,jsonSerde)).aggregate( //一些轉換 );

KafkaStreams kafkaStreams = new KafkaStreams(builder.build(streamConfiguration),streamConfiguration); `

我檢查了融合頁面的優化方法並遵循了建議的更改。 但它仍然試圖生成changelogTopic。

我理解您在這里的困惑,但變更日志主題的優化僅適用於KTable操作。 例如:

KTable<String, String> someTable = builder.table("topic");

啟用優化后,Kafka Streams 也將使用KTable的源主題作為更改日志主題。

如果您不希望 Kafka Streams 為您的聚合創建變更日志主題,那么您需要使用Materialized.withLoggingDisabled() config object 顯式禁用它:

streamData.groupByKey(Grouped.with(jsonSerde,jsonSerde)) .aggregate(initializer, aggregator, Materialized.as("store-name").withLoggingDisabled();

以上只是一個例子; 如果需要,您還可以使用Materialized來配置鍵和值Serdes 但底線是防止您需要使用Materialized.withLoggingDisabled()的更改日志主題。

此外,您可以使用StoreBuilder配置更改日志主題。 Stores的 Javadoc 有一個使用StoreBuilder的簡短示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM