栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

由以下原因引起:org.springframework.jms.support.converter.MessageConversionException:在消息上找不到类型id属性[_type]

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

由以下原因引起:org.springframework.jms.support.converter.MessageConversionException:在消息上找不到类型id属性[_type]

TypeIdPropertyName
是标识实体的属性的名称。Jackson映射器应知道反序列化传入JSON时使用哪个实体。

该请求应如下所示:

{     "_type" : "hello.Email",   "to" : "Imran",   "from" : "dzatorsky"}

顺便说一句,我认为这不是最好的解决方案,因为JMS已经知道要使用哪种类型(可以在方法中声明)。另一个缺点是,您在消息中指定了实体和软件包的名称,这将很难维护(每次更改软件包或实体名称都会很麻烦)。

这是更可靠的配置:

@EnableJms@Configurationpublic class JmsListenerConfig implements JmsListenerConfigurer {    @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());    }}

另外,如果使用Spring JmsTemplate发送消息,则可以将此组件添加到配置中:

@Componentpublic class JsonMessageConverter implements MessageConverter {    @Autowired    private ObjectMapper mapper;        @Override    public javax.jms.Message toMessage(Object object, Session session) throws JMSException, MessageConversionException {        String json;        try { json = mapper.writevalueAsString(object);        } catch (Exception e) { throw new MessageConversionException("Message cannot be parsed. ", e);        }        TextMessage message = session.createTextMessage();        message.setText(json);        return message;    }        @Override    public Object fromMessage(javax.jms.Message message) throws JMSException, MessageConversionException {        return ((TextMessage) message).getText();    }}

使用此配置,您可以跳过邮件中令人讨厌的“ _type”字段。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/466254.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号