kafka幂等生产者配置

scyqe7ek  于 2021-06-04  发布在  Kafka
关注(0)|答案(3)|浏览(759)

对于本机java kafka客户端,有一个kafka配置,名为, enable.idempotence 我们可以设定为 true 启用幂等生产者。
然而,对于spring-kafka,我在这一类中找不到类似的幂等性 KafkaProperties 班级。
所以我想知道,如果我在我的springkafka配置文件中手动设置,这个属性会生效还是spring会完全忽略springkafka的这个配置?

ibps3vxo

ibps3vxo1#

有两种方法可以指定此属性
application.properties您可以使用此属性指定producer上的任何其他属性

spring.kafka.producer.properties.*= # Additional producer-specific properties used to configure the client.

如果生产者和消费者之间有任何其他公共配置

spring.kafka.properties.*= # Additional properties, common to producers and consumers, used to configure the client.

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

@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());
    }
 }
8hhllhi2

8hhllhi22#

你可以用它找到它 ProducerConfig 因为它是生产者配置。要启用此功能,需要在producerconfigs中添加以下行:

Properties producerProperties = new Properties();
  producerProperties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
  producerProperties.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, true);
t5zmwmid

t5zmwmid3#

您试图添加spring kafkaproperties无法处理的功能,如果查看文档,可以执行以下操作:

Only a subset of the properties supported by Kafka are available directly through the KafkaProperties class. 
If you wish to configure the producer or consumer with additional properties that are not directly supported, use the following properties:

spring.kafka.properties.prop.one=first
spring.kafka.admin.properties.prop.two=second
spring.kafka.consumer.properties.prop.three=third
spring.kafka.producer.properties.prop.four=fourth
spring.kafka.streams.properties.prop.five=fifth

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-messaging.html#boot-特色Kafka额外道具
扬尼克

相关问题