为 Spring Boot 的传入消息添加缺少的 ContentType

我有 Spring Boot 应用程序


它正在从 ActiveMQ 接收 Json 格式的消息


@Component class Receiver {

    @JmsListener(destination = "queue")

    public void receiveMessage(BusMessage message) {

        System.out.println("Received <" + message + ">");

    }

问题是,有时 Json 可以在没有正确标题的情况下到达


在这种情况下,我得到异常


org.springframework.messaging.converter.MessageConversionException: Cannot convert from [java.lang.String] to [cam.melexis.minipcs2socketioserver.BusMessage] for org.springframework.jms.listener.adapter.AbstractAdaptableMessageListener$MessagingMessageConverterAdapter$LazyResolutionMessage@38bd4ff9, failedMessage=org.springframework.jms.listener.adapter.AbstractAdaptableMessageListener$MessagingMessageConverterAdapter$LazyResolutionMessage@38bd4ff9

一种解决方案是将消息作为字符串获取并反序列化


@Component class Receiver {

    @JmsListener(destination = "queue")

    public void receiveScannerMessage(Message message, Session session) {

        System.out.println("Received <" + message + ">");

    }

但我想做一些更优雅的事情


简化所有@JmsListener


为了让我在春季的学习曲线更加弯曲:)


知道所有消息将以 Json 格式到达,我可以为所有传入消息添加缺少的标头吗?


还是存在另一种“更好”的方式?


HUX布斯
浏览 148回答 1
1回答

梵蒂冈之花

这创造了一份工作@EnableJms@Configuration class JmsListenerConfig implements JmsListenerConfigurer {&nbsp;Logger logger = LoggerFactory.getLogger(Receiver.class);&nbsp;@Bean&nbsp;public DefaultMessageHandlerMethodFactory handlerMethodFactory() {&nbsp; &nbsp; DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory();&nbsp; &nbsp; factory.setMessageConverter(messageConverter());&nbsp; &nbsp; return factory;&nbsp;}&nbsp;@Bean&nbsp;public MessageConverter messageConverter() {&nbsp; &nbsp; return new MappingJackson2MessageConverter();&nbsp;}&nbsp;@Override&nbsp;public void configureJmsListeners(JmsListenerEndpointRegistrar registrar) {&nbsp; &nbsp; registrar.setMessageHandlerMethodFactory(handlerMethodFactory());&nbsp;}}但我不知道如何也许有人可以帮助我吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java