骆驼新手并且想知道,如果下面的路线如下,我如何存储进入路线的原始信息以便记录它。所以在我的when条件下面,我调用一个bean方法,如果方法返回true,我想将原始消息写入文件。下面的这个例子反而想要从bean调用中写出响应,而不是写入路径的原始消息。
我正在考虑使用如下所示的setProperty,但后来我不确定如何使用文件组件编写它?
<setProperty propertyName="origInData">
<simple>${body}</simple>
</setProperty>
任何建议都会很棒。感谢
<route>
<from uri="direct:processOrders"/>
<bean method="isMaster" ref="mybean"/>
<choice>
<when>
<simple>${body} == true</simple>
<to uri="file:c:/out/messages/?fileExist=Append&fileName=messages.txt"/>
</when>
<otherwise>
<log message="********* I'M IN SLAVE MODE - DO NOTHING"/>
</otherwise>
</choice>
</route>
答案 0 :(得分:1)
您应该使用方法调用(在bean上调用方法)作为基于内容的路由器中的谓词,例如使用<method>
<choice>
<when>
<method method="isMaster" ref="mybean"/>
...
</when>
<otherwise>
...
</otherwise>
</choice>
Camel支持使用任何类型的谓词,而不仅仅是简单的语言。
答案 1 :(得分:0)
你是对的。使用原始输入设置属性。然后,当您需要将其写出来时,请使用以下内容将其重新发送到邮件正文:
<setBody><simple>${property.origInData}</simple></setBody>