代码之家  ›  专栏  ›  技术社区  ›  Yashdeep Sharma

如何将GenericMessageJacksonDeserializer与Spring Kafka和Spring集成在一起?

  •  1
  • Yashdeep Sharma  · 技术社区  · 8 年前

    我想知道如果我的kafka消息是GenericMessage类型的,如何将GenericMessageJacksonDeserializer与spring kafka consumer factory一起使用?

    @Bean
    public ConsumerFactory<?, GenericMessage> consumerFactory(KafkaProperties kafkaProperties) {
        final Map<String, Object> consumerProperties = kafkaProperties.buildConsumerProperties();
        final DefaultKafkaConsumerFactory<?, GenericMessage> consumerFactory = new DefaultKafkaConsumerFactory<>(consumerProperties);
        consumerFactory.setValueDeserializer(GenericMessageJacksonDeserializer.class);
        return consumerFactory;
    }
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Artem Bilan    8 年前
    1. 这个 consumerFactory.setValueDeserializer() 是用于 org.apache.kafka.common.serialization.Deserializer

    2. 我想你是说 org.springframework.integration.support.json.GenericMessageJacksonDeserializer 这正是 ObjectMapper JacksonJsonUtils.messagingAwareMapper() ,也就是说,呃。。。,真的意识到了这一点 GenericMessageJacksonDeserializer 已经

    3. 当你得到它的时候 ,您应该将其注入。。。风俗 Deserializer 消费者工厂。setValueDeserializer() . 这个 messagingAwareMapper org.springframework.kafka.support.serializer.JsonDeserializer 因为这确实需要一个特定的类型来进行反序列化。但是,我们可以尝试以下方法:

      consumerFactory.setValueDeserializer(new JsonDeserializer(GenericMessage.class, JacksonJsonUtils.messagingAwareMapper()));