Apache camel 如何通过ActiveMQ在驼峰路由之间高效地传递XML文档
我有一系列检索、转换、拆分和组合XML文档的驼峰路线。这一切都很好 这些路由由ActiveMQ主题和队列链接 一切都好 但是,在某些情况下,我需要处理大量文档,而且因为Camel的JMS组件将XML文档转换为消息的文本,队列导致将XML呈现为字符串,并多次对文档进行重新解析,这是一个巨大的处理开销 我尝试将JMS生产者jmsMessageType设置为Object,但当使用者检索消息时,我输出exchange.getIn.getBody.getClass.getCanonicalName,我得到java.lang.String 对于直接通过ActiveMQ主题/队列传递的XML文档对象,我需要对生产者和消费者进行哪些设置,而不需要呈现为字符串并重新解析 感谢您的关注。谢谢您的DOM和Camel。引用Xerces文档,如果它真的更有效,这是值得怀疑的: 一些粗略的测量表明,XML序列化的性能优于Java对象序列化,并且XML实例文档比对象序列化的DOM需要更少的存储空间 还有另一个问题:Camel的Java序列化数据格式已被弃用,并且有可能在即将发布的Camel版本中被删除。不过,该实现非常简单,如果不推荐,您可以添加一个复制当前Camel的自定义数据格式 如果你想尝试一下,制作人可能会这样:Apache camel 如何通过ActiveMQ在驼峰路由之间高效地传递XML文档,apache-camel,activemq,Apache Camel,Activemq,我有一系列检索、转换、拆分和组合XML文档的驼峰路线。这一切都很好 这些路由由ActiveMQ主题和队列链接 一切都好 但是,在某些情况下,我需要处理大量文档,而且因为Camel的JMS组件将XML文档转换为消息的文本,队列导致将XML呈现为字符串,并多次对文档进行重新解析,这是一个巨大的处理开销 我尝试将JMS生产者jmsMessageType设置为Object,但当使用者检索消息时,我输出exchange.getIn.getBody.getClass.getCanonicalName,我得到
from(...)
// you need to hava Xerces DOM object in the exchange body at this point
.marshal().serialization()
.to("jms:myqueue");
…和消费者:
from("jms:myqueue")
.unmarshal().serialization()
// you should have your Xerces DOM again
...