首页 > 解决方案 > Spring Cloud Stream @StreamListener 自定义 MappingJackson2MesageConverter

问题描述

ObjectMapper在我的应用程序中配置了一个自定义模块,该模块具有用于反序列化 Guava 在 Jackson 中提供的不可变类型的自定义模块。

我的问题是我似乎无法通过正确地反序列化我的对象来覆盖objectMapper使用。@StreamListener

这是我尝试过的:

@Bean
public MessageConverter messageConverter() {
    final MappingJackson2MessageConverter mappingJackson2MessageConverter = new MappingJackson2MessageConverter();
    mappingJackson2MessageConverter.setObjectMapper(objectMapper);
    return mappingJackson2MessageConverter;
}

上面的代码片段在一个带有注释的类中,@Configuration并且objectMapper在类中定义:

    public static final ObjectMapper objectMapper = new ObjectMapper()
        .registerModule(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES))
        .registerModule(new GuavaModule());

关于我可能遗漏的任何想法?

标签: springspring-cloud-streamspring-rabbitjackson-databindspring-messaging

解决方案


所以,事实证明我的配置没有问题。我的自定义ObjectMapperMappingJackson2MessageConverter. 但是,没有选择消息转换器,因为发送的消息带有错误的内容类型标头。

故事的道德,小心 Content-Type 并确保它与转换器匹配。


推荐阅读