如何禁止Spring Boot连接Kafka时为配置的client-id自动添加后缀?
解决方案
Spring Kafka为消费/生产实例添加编号后缀的核心原因是为了多并发场景下区分不同实例,你可以通过以下两种方式关闭该特性:
方案1:通过配置文件直接关闭
直接在application.properties或application.yml中添加如下配置即可:
# 关闭消费者端client-id自动添加后缀 spring.kafka.listener.client-id-suffix= # 如果需要同时关闭生产者端的自动后缀,添加以下配置 spring.kafka.producer.client-id-suffix=
如果使用yaml格式,配置如下:
spring: kafka: listener: client-id-suffix: "" producer: client-id-suffix: ""
方案2:自定义容器工厂关闭
如果你手动配置了ConcurrentKafkaListenerContainerFactory,可以直接在工厂实例中设置空的后缀:
@Bean public ConcurrentKafkaListenerContainerFactory<String, String> kafkaListenerContainerFactory( ConsumerFactory<String, String> consumerFactory) { ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>(); factory.setConsumerFactory(consumerFactory); // 设置空后缀,禁止自动添加编号 factory.setClientIdSuffix(""); return factory; }
注意事项
如果你在@KafkaListener注解中单独指定了clientIdPrefix,同样会遵循上述后缀规则,搭配空后缀配置即可生效,不会再自动追加-0、-1这类编号。
内容的提问来源于stack exchange,提问作者Sia
相关产品推荐
相关产品推荐

