【问题标题】:How to configure min.insync.replicas parameter on Spring Kafka Producer?如何在 Spring Kafka Producer 上配置 min.insync.replicas 参数?
【发布时间】:2020-11-03 22:52:18
【问题描述】:

在 Java Spring 应用程序中,我将 Producer 配置为使用 Acks,并且还必须设置 min.insync.replicas 参数。

我使用以下方法设置了 Acks:

configProps.put(ProducerConfig.ACKS_CONFIG, kafkaAcks);

但我在ProducerConfig 上找不到min.insync.replicas 属性。查看Kafka Spring Docs 没有找到与min.insync.replicas 相关的属性。

那么,我如何在 Kafka Spring 应用程序上配置 min.insync.replicas?

    @Bean
public KafkaTemplate<String, GenericRecord> kafkaTemplate() {
    return new KafkaTemplate<>(producerFactory());
}

public ProducerFactory<String, GenericRecord> producerFactory() {
    return new DefaultKafkaProducerFactory<>(getProducerGenericRecordConfigurations());
}

private Map<String, Object> getProducerGenericRecordConfigurations() {
    Map<String, Object> configProps = new HashMap<>();
    configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaBootstrapServerUrl);
    configProps.put(KafkaAvroDeserializerConfig.SCHEMA_REGISTRY_URL_CONFIG, schemaRegistryURL);
    configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
    configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class);
    configProps.put(ProducerConfig.ACKS_CONFIG, kafkaAcks);
    return configProps;
}

【问题讨论】:

    标签: java spring apache-kafka kafka-producer-api


    【解决方案1】:

    min.insync.replicas 不是生产者配置。这是一个代理/主题设置。

    您可以在您的代理的server.properties 文件中为代理设置它。

    否则,您可以在创建时或通过更改主题来设置它。

    【讨论】:

    • 这和Replication Factor的道具一样吗? Aso,我可以在 Producer 端覆盖这个道具吗?
    • 不,这是一个不同的配置,称为min.insync.replicas。您不能在生产者端覆盖它。正如我所说,它是在代理上设置的,或者可以在主题级别被覆盖。例如,要创建一个 min.insync.replicas 设置为 2 的主题:./bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic test --partitions 1 --replication-factor 2 --config min.insync.replicas=2
    猜你喜欢
    • 2020-03-05
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    相关资源
    最近更新 更多