如何使用spring配置设置log.cleanup.policy:compact
答案 0 :(得分:1)
此属性是Broker Config:http://kafka.apache.org/documentation/#brokerconfigs。因此必须在代理端配置。从Spring Cloud Stream Kafka Binder的角度来看,无所事事。它只是现有Apache Kafka经纪人的客户端。
如果您从Spring Kafka的角度谈论KafkaEmbedded
,可以选择以下方法:
/**
* Specify the properties to configure Kafka Broker before start, e.g.
* {@code auto.create.topics.enable}, {@code transaction.state.log.replication.factor} etc.
* @param brokerProperties the properties to use for configuring Kafka Broker(s).
* @return this for chaining configuration
* @see KafkaConfig
*/
public KafkaEmbedded brokerProperties(Map<String, String> brokerProperties) {
this.brokerProperties.putAll(brokerProperties);
return this;
}
/**
* Specify a broker property.
* @param property the property name.
* @param value the value.
* @return the {@link KafkaEmbedded}.
* @since 2.1.4
*/
public KafkaEmbedded brokerProperty(String property, Object value) {
this.brokerProperties.put(property, value);
return this;
}
答案 1 :(得分:1)
log.cleanup.policy
是代理配置(在server.properties中),而不是客户端属性。
更改单个主题的政策
kafka-topics --zookeeper localhost:2181 --alter --topic myTopic --config cleanup.policy=compact
或
kafka-configs --zookeeper localhost:2181 --entity-type=topics --entity-name=mytopic --alter --add-config cleanup.policy=compact
(因为第一个被弃用)
WARNING: Altering topic configuration from this script has been deprecated and may be removed in future releases.
Going forward, please use kafka-configs.sh for this functionality
答案 2 :(得分:0)
根据Gary和Artem的答案更新此答案,以避免任何混淆。
您可以使用密钥spring.cloud.stream.kafka.binder.configurarion...
传递任意kafka客户端配置。但是,由于log.cleanup.policy
是代理级别属性,因此您无法以这种方式从绑定器中使用它。您需要在代理上设置它。请参阅以下答案以获取更多信息。