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

ach*_*hap 5 java spring-boot spring-kafka

@KafkaListener在我的spring boot应用程序中使用了注释,而没有创建自定义KafkaListenerContainerFactorybean。我目前正在spring.kafka.consumer.value-deserializer我的application.yml文件中设置属性以分配我的反序列化器,并且更喜欢通过编程方式进行此操作以进行编译时检查。我意识到创建自己的KafkaListenerContainerFactory属性可以使我在工厂设置此属性,但是我想避免样板操作以及在进行SSL设置时出现一些额外的麻烦。

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

Gar*_*ell 4

反序列化器使用用于创建消费者工厂的属性,而不是容器工厂,您可以覆盖启动的消费者工厂,如下所示:

@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);
}
Run Code Online (Sandbox Code Playgroud)