Spring Cloud Stream @StreamListener 自定义映射Jackson2MesageConverter

Spring Cloud Stream @StreamListener Custom MappingJackson2MesageConverter

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

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

这是我尝试过的:

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

上面的代码片段在 class 中用 @Configuration 注释并且 objectMapper 在 class:

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

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

所以,事实证明我的配置没有问题。 MappingJackson2MessageConverter 选择了我的自定义 ObjectMapper。但是,没有选择消息转换器,因为发送消息时使用了错误的 content-type header.

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