大家好我在需要为XML请求提供“复合”流程时遇到以下情况。这是我的春季路线定义的片段:
<route id="request1">
<from uri="activemq:request1" />
<unmarshal ref="integrationServerJaxb" />
<bean ref="createTINValidationMessage" />
<bean ref="switchComponent" />
<bean ref="createCreateTINMessage" />
<bean ref="switchComponent" />
<bean ref="createResponse1" />
<marshal ref="integrationServerJaxb" />
</route>
基本上我想要达到的目标是:
换句话说,我需要在处理过程中掌握初始消息。在CreateCreateTINMessage bean中,我可以将方法参数更改为Message类型,然后它将映射到实际的Camel消息(从上一步开始),而不是交换中的第一条消息。检查消息的交换,我可以使用request1 xml有效负载跟踪初始JMS消息,但是深入了解似乎并不正确。我的问题是,是否有可能以某种方式执行与中间结果和来自路线的初始消息的集成?谢谢。
答案 0 :(得分:2)
当然,只需在交换属性(或邮件头)中明确保留它......
from(...)
.setProperty("ORIG_EXCH",body())
...
.process(new Processor() {
public void process(Exchange exch) throws Exception {
Object orig = exch.getProperty("ORIG_EXCH");
...
}
})
...
或者您可以使用此API从您的路线中检索它......
exchange.getUnitOfWork().getOriginalInMessage();