【问题标题】:Configuring custom Kafka Consumer Deserializer in application.properties file. [spring boot]在 application.properties 文件中配置自定义 Kafka Consumer Deserializer。 [弹簧靴]
【发布时间】:2026-01-15 05:25:02
【问题描述】:
我想在不使用 Confluent 模式注册表的情况下使用 avro 消息并反序列化它们。我在本地有架构。所以,为此,我只关注了https://medium.com/@mailshine/apache-avro-quick-example-in-kafka-7b2909396c02 的消费者部分。现在,我想在 application.properties 文件中配置这个反序列化器(Spring 引导方式)。
我尝试添加
spring.kafka.consumer.value-deserializer=com.example.AvroDeserializer
但这会导致错误提示“找不到 com.example.AvroDeserializer 的公共无参数构造函数”。
有什么方法可以使用 application.properties 配置中的参数调用构造函数。
或者
我需要在代码而不是属性中配置它吗?
提前致谢!!
【问题讨论】:
标签:
spring-boot
kafka-consumer-api
spring-kafka
【解决方案1】:
您可以使用属性来实现,但您必须通过 configure 方法(使用无参数构造函数)来实现 - 这是因为 Kafka 实例化了反序列化器,而不是 Spring。
有关示例,请参阅org.springframework.kafka.support.serializer.JsonDeserializer 源代码。
否则,您可以将反序列化器注入消费者工厂...
@Bean
MyDeserializer(DefaultKafkaConsumerFactory<String, Foo> factory) {
MyDeserializer<Foo> deser = new MyDeserializer<>(...);
factory.setValueDeserializer(deser);
return deser;
}