为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUX布斯 2022-07-20 19:39:00
我有 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 格式到达,我可以为所有传入消息添加缺少的标头吗?还是存在另一种“更好”的方式?
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

这创造了一份工作


@EnableJms

@Configuration class JmsListenerConfig implements JmsListenerConfigurer {


 Logger logger = LoggerFactory.getLogger(Receiver.class);


 @Bean

 public DefaultMessageHandlerMethodFactory handlerMethodFactory() {

    DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory();

    factory.setMessageConverter(messageConverter());

    return factory;

 }


 @Bean

 public MessageConverter messageConverter() {

    return new MappingJackson2MessageConverter();

 }


 @Override

 public void configureJmsListeners(JmsListenerEndpointRegistrar registrar) {

    registrar.setMessageHandlerMethodFactory(handlerMethodFactory());

 }

}

但我不知道如何


也许有人可以帮助我吗?


查看完整回答
反对 回复 2022-07-20
  • 1 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信