gpt4 book ai didi

java - 如何在 Spring-AMQP 中使用 Jackson2JsonMessageConverter 处理内容类型 null

转载 作者:行者123 更新时间:2023-12-01 19:41:53 28 4
gpt4 key购买 nike

如果it's not one problem , it's another ...我似乎已经解决了之前的两个问题,但现在当在测试上下文之外运行时,使用独立的应用程序我会看到这一点。

o.s.a.s.c.Jackson2JsonMessageConverter   : Could not convert incoming message with content-type [null], 'json' keyword missing.

和以前一样,这条消息看起来相当清楚。哎呀,事情甚至可以在独立的测试上下文中运行,但是当在独立服务器中运行时,代码似乎采取了不同的路径,并且由于相同的原因但通过不同的组件而失败。

@Configuration
open class MessagingConfig {

@Bean
open fun jackson2Json(om: ObjectMapper): SmartMessageConverter {
return Jackson2JsonMessageConverter(om)
}

@Bean
open fun mappingJackson2(om: ObjectMapper): MappingJackson2MessageConverter {
val mc = MappingJackson2MessageConverter()
mc.objectMapper = om
return mc
}

@Bean
open fun defaultMessageHandlerMethodFactory(jackson: MappingJackson2MessageConverter): DefaultMessageHandlerMethodFactory {
val factory = DefaultMessageHandlerMethodFactory()
factory.setMessageConverter(jackson)
return factory
}


@Bean
open fun builder(): Jackson2ObjectMapperBuilderCustomizer {
return Jackson2ObjectMapperBuilderCustomizer {
it.modules(JavaTimeModule(), KotlinModule())
it.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
}
}


@Configuration
open class RabbitConfigurer(val dmhmf: DefaultMessageHandlerMethodFactory) : RabbitListenerConfigurer {
override fun configureRabbitListeners(registrar: RabbitListenerEndpointRegistrar?) {
registrar?.messageHandlerMethodFactory = dmhmf
}
}
}

最佳答案

您可以将 MessagePostprocessor 添加到容器工厂,以使用 content_id 属性增强消息。

factory.setAfterReceivePostProcessors(m -> {
m.getMessageProperties().setContentId("application/json");
return m;
}

关于java - 如何在 Spring-AMQP 中使用 Jackson2JsonMessageConverter 处理内容类型 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55093859/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com