java – 使用@KafkaListener时以编程方式设置属性

我在我的
spring启动应用程序中使用了@KafkaListener注释,而没有创建自定义的KafkaListenerContainerFactory bean.我正在我的application.yml文件中设置spring.kafka.consumer.value-deserializer属性来分配我的反序列化器,并且更喜欢以编程方式执行此操作以进行编译时检查.我意识到创建我自己的KafkaListenerContainerFactory允许我在工厂设置这个属性,但我想避免锅炉板和一些额外的复杂性来获得SSL设置.

有没有一种简单的方法来以编程方式设置我的值反序列化器而无需创建我自己的KafkaListenerContainerFactory?

最佳答案 反序列化器用于创建使用者工厂的属性,而不是容器工厂,您可以覆盖boot的使用者工厂,如下所示:

@Bean
public ConsumerFactory<?, ?> kafkaConsumerFactory(KafkaProperties properties) {
    Map<String, Object> props = properties.buildConsumerProperties();
    props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, MyDeserializer.class);
    return new DefaultKafkaConsumerFactory<>(props);
}
点赞