Spring Kafka 幂等生产者配置

ttt*_*ttt 4 apache-kafka spring-kafka

对于原生的 Java Kafka 客户端,有一个叫做 Kafka 的配置,enable.idempotence我们可以设置true为启用幂等生产者。

但是,对于 Spring Kafka,我在KafkaProperties课堂上找不到类似的幂等性。

所以我想知道,如果我在我的 Spring Kafka 配置文件中手动设置,这个属性会生效还是 Spring 会完全忽略 Spring Kafka 的这个配置?

Dea*_*ool 5

有两种方法可以指定此属性

application.properties您可以使用此属性来指定生产者的任何其他属性

spring.kafka.producer.properties.*= # Additional producer-specific properties used to configure the client.
Run Code Online (Sandbox Code Playgroud)

如果您在生产者和消费者之间有任何额外的通用配置

spring.kafka.properties.*= # Additional properties, common to producers and consumers, used to configure the client.
Run Code Online (Sandbox Code Playgroud)

通过代码您还可以覆盖和自定义配置

 @Bean
public ProducerFactory<String, String> producerFactory() {

   Map<String, Object> configProps = new HashMap<>();
   configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,bootstrapAddress);
    configProps.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, true);
    configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
    StringSerializer.class);
    configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, 
      StringSerializer.class);
    return new DefaultKafkaProducerFactory<>(configProps);
}

@Bean
public KafkaTemplate<String, String> kafkaTemplate() {
    return new KafkaTemplate<>(producerFactory());
    }
 }
Run Code Online (Sandbox Code Playgroud)