我们如何使用Spring云流启用日志压缩?

时间:2018-06-04 19:45:15

标签: kafka-consumer-api kafka-producer-api spring-cloud-stream spring-kafka

如何使用spring配置设置log.cleanup.policy:compact

3 个答案:

答案 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是代理级别属性,因此您无法以这种方式从绑定器中使用它。您需要在代理上设置它。请参阅以下答案以获取更多信息。