json到对象转换期间出现异常:无法解析';json_uuuutypeid_uuuu';在';javaTypes';
我正在读取一个包含json消息的队列,在侦听器中,我试图从该json作为对象访问该消息。这是使用的转换器:json到对象转换期间出现异常:无法解析';json_uuuutypeid_uuuu';在';javaTypes';,json,jms,activemq,spring-jms,Json,Jms,Activemq,Spring Jms,我正在读取一个包含json消息的队列,在侦听器中,我试图从该json作为对象访问该消息。这是使用的转换器: @Bean // Serialize message content to json using TextMessage public MessageConverter jacksonJmsMessageConverter() { MappingJackson2MessageConverter converter = new MappingJackson2MessageConver
@Bean // Serialize message content to json using TextMessage
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("BrokerTrade.class");
return converter;
}
我面临以下例外情况
org.springframework.integration.transformer.MessageTransformationException: failed to transform message; nested exception is java.lang.IllegalArgumentException: Could not resolve 'json__TypeId__' in 'javaTypes'.
下面是示例json,我正在使用jmsTemplate将其添加到队列中
{
“id”:1,
“tradeSourceId”:“mytradeSourceId”,
“messageOriginCode”:“CXE”,
“sequenceNumber”:“1”,
“消息类型”:“传输”,
“移动代码”:“1”,
“transferType”:“正常”,
“updateType”:“无更新”
}
请帮忙
>converter.setTypeIdPropertyName("BrokerTrade.class");
这应该是消息中字符串属性的名称,其中包含有关要转换为的类型的信息—或者是要在类映射中查找以确定类名的值的完全限定类名
如果消息不包含类型信息,则必须对转换器进行子类化,并覆盖getJavaTypeForMessage
以返回JacksonJavaType
/**
* Determine a Jackson JavaType for the given JMS Message,
* typically parsing a type id message property.
* <p>The default implementation parses the configured type id property name
* and consults the configured type id mapping. This can be overridden with
* a different strategy, e.g. doing some heuristics based on message origin.
* @param message the JMS Message to set the type id on
* @throws JMSException if thrown by JMS methods
* @see #setTypeIdOnMessage(Object, javax.jms.Message)
* @see #setTypeIdPropertyName(String)
* @see #setTypeIdMappings(java.util.Map)
*/
protected JavaType getJavaTypeForMessage(Message message) throws JMSException {
...
}
objectMapper.getTypeFactory().constructType(BrokerTrade.class)