【问题标题】:Spring Cloud Stream @StreamListener Custom MappingJackson2MesageConverterSpring Cloud Stream @StreamListener 自定义 MappingJackson2MesageConverter
【发布时间】:2019-01-23 13:14:16
【问题描述】:

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

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

这是我尝试过的:

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

上面的sn-p在一个用@Configuration注解的类中,objectMapper在类中定义:

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

关于我可能缺少什么的任何想法?

  • Spring Boot: 1.5.10.RELEASE
  • 春兔: 1.7.6.RELEASE
  • Spring Cloud Stream: 1.2.2.RELEASE
  • 春季消息: 4.3.14.RELEASE

【问题讨论】:

  • 您使用的是旧版本。您可以尝试升级到 Spring Cloud Stream 2.0.x 版本(需要 Boot 2.0.x)吗?
  • @sobychacko,如果我有一个简单的选择,我肯定会这样做。但是,我正在尝试为当前版本堆栈解决此问题。

标签: spring spring-cloud-stream spring-rabbit jackson-databind spring-messaging


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-04-25
    • 2019-06-09
    • 2020-12-22
    • 2019-08-03
    • 2017-02-16
    • 1970-01-01
    • 2019-02-02
    • 2017-11-18
    • 2019-02-05
    相关资源
    最近更新 更多