Java Kafka-在使用者中反序列化对象

Java Kafka-在使用者中反序列化对象,java,apache-kafka,spring-kafka,Java,Apache Kafka,Spring Kafka,我们正在考虑在我们的消息传递中使用Kafka,我们的应用程序是使用Spring开发的。所以,我们计划使用春季卡夫卡 生产者将消息作为HashMap对象放入队列。我们有JSON序列化程序,我们假设映射将被序列化并放入队列中。这是制作人的配置 spring: kafka: bootstrap-servers: localhost:9092 producer: key-serializer: org.springframework.kafka.support.ser

我们正在考虑在我们的消息传递中使用Kafka,我们的应用程序是使用Spring开发的。所以,我们计划使用春季卡夫卡

生产者将消息作为HashMap对象放入队列。我们有JSON序列化程序,我们假设映射将被序列化并放入队列中。这是制作人的配置

spring:
  kafka:
    bootstrap-servers: localhost:9092
    producer:
        key-serializer: org.springframework.kafka.support.serializer.JsonSerializer
        value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
另一方面,我们有一个监听器,它在监制发布消息的地方收听同一主题。以下是消费者配置:

spring:
   kafka:
       consumer:
            group-id: xyz
            key-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
            value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
我们的侦听器方法:

  public void listener(SomeClass abx)
我们期望json将被反序列化,并生成“SomeClass”类型的对象。但显然,它抛出了反序列化异常

我们看到的文章不多,建议采取以下措施:

 @Bean
  public ConsumerFactory<String, Car> consumerFactory() {
    return new DefaultKafkaConsumerFactory<>(consumerConfigs(), new StringDeserializer(),
        new JsonDeserializer<>(Car.class));
  }
@Bean
公共消费者工厂消费者工厂(){
返回新的DefaultKafkanConsumerFactory(consumerConfigs(),new StringDeserializer(),
新的JsonDeserializer(Car.class));
}
我们不想编写一些代码来创建反序列化程序。有没有我们遗漏的样板文件? 任何帮助都将不胜感激

见。特别是:

您还可以按如下方式配置Spring Kafka JsonDeserializer:

spring.kafka.consumer.value反序列化器=org.springframework.kafka.support.serializer.jsondesellizer

spring.kafka.consumer.properties.spring.json.value.default.type=com.example.Invoice

spring.kafka.consumer.properties.spring.json.trusted.packages=com.example,org.acme


用于序列化/反序列化的文档:看起来它应该只与@KafkaListener注释一起工作。他们建议做一些类似于新JsonDeserializer(Bar.class)的事情;我不想这样做,因为当我们有更多具有不同类型对象的侦听器时,它会增长。我不认为为Kafka提供单个配置类是一个问题。这只是应用程序配置的一部分。但是我会关注这个问题,因为如果解决方案存在的话,这很有趣。当然。谢谢你的建议!!您可以使用属性设置所需的类型-请参阅我的答案。