Java 驼峰路由自动将序列化对象转换为xml
我将camel与JMS一起使用。我有一个路由,它只是将jaxb注释的java对象放在mq上。java对象没有实现serializable,它只有“serialVersionUID” 问题是,对象被转换为XML,并且目标队列具有MQSTR类型的XML消息。这是默认行为吗?我们应该一直依靠它吗?请注意,我们没有从JavaDSL中使用任何封送或解组,如果我们从pom.xml中删除jaxb依赖项,它就不会转换为xml 我的路线就是这样的凡尼拉Java 驼峰路由自动将序列化对象转换为xml,java,xml,jaxb,jms,apache-camel,Java,Xml,Jaxb,Jms,Apache Camel,我将camel与JMS一起使用。我有一个路由,它只是将jaxb注释的java对象放在mq上。java对象没有实现serializable,它只有“serialVersionUID” 问题是,对象被转换为XML,并且目标队列具有MQSTR类型的XML消息。这是默认行为吗?我们应该一直依靠它吗?请注意,我们没有从JavaDSL中使用任何封送或解组,如果我们从pom.xml中删除jaxb依赖项,它就不会转换为xml 我的路线就是这样的凡尼拉 from("someRoute") .setExchang
from("someRoute")
.setExchangePattern(ExchangePattern.InOnly)
.doTry().processRef("processor")
.inOnly("destinationQueue")
.doCatch(Exception.class)
.to("errorQueue");
处理器填充jaxb类并将其设置为body。我的处理器代码是这样的
JaxbClass message = mapper.mapHL7ToXML(hl7Message);
exchange.getIn().setBody(message) ;
我目前在pom for jaxb中使用它作为依赖项
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jaxb</artifactId>
<version>2.10.3</version>
</dependency>
org.apache.camel
骆驼jaxb
2.10.3
了解JMS及其支持的消息类型。由于您的java对象不可序列化,因此它不能使用它,然后回退到使用文本消息,您的对象在发送之前会转换为文本消息
您可以使用jmsMessageType选项告诉Camel您想要哪种JMS类型。
camel-jaxb中有一个类型转换器,可以将jaxb注释为XML的java对象转换为XML,从而转换用例中发生的事情