gpt4 book ai didi

java - Camel路由自动将序列化对象转为xml

转载 作者:行者123 更新时间:2023-11-30 08:25:39 25 4
gpt4 key购买 nike

我在 JMS 中使用 camel。我有一条路线,它只是将 jaxb 注释的 java 对象放在 mq 上。 java 对象没有实现可序列化,它只有“serialVersionUID”。

问题是,对象被转换为 XML,并且目标队列有一个 MQSTR 类型的 XML 消息。这是默认行为吗?我们应该一直依赖它吗?请注意,我们没有使用来自 java dsl 的任何 marshal 或 unmarshal,如果我们从 pom.xml 中删除 jaxb 依赖项,它不会转换为 xml。

我的路线是这样的普通 Vanilla 。

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) ;

我目前在 jaxb 的 pom 中使用它作为依赖项。

<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jaxb</artifactId>
<version>2.10.3</version>
</dependency>

最佳答案

了解 JMS 及其支持的消息类型。由于您的 Java 对象不可序列化,因此无法使用它,然后回退使用文本消息,您的对象在发送之前已转换为文本消息。

您可以使用 jmsMessageType 选项告诉 Camel 您想要哪种 JMS 类型。 http://camel.apache.org/jms

camel-jaxb 中有一个类型转换器,可以将已被 JAXB 注释的 java 对象转换为 XML,从而在您的用例中发生什么。

关于java - Camel路由自动将序列化对象转为xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22106700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com