将原始Camel消息写入文件

时间:2014-05-20 20:33:40

标签: apache-camel

骆驼新手并且想知道,如果下面的路线如下,我如何存储进入路线的原始信息以便记录它。所以在我的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&amp;fileName=messages.txt"/>
        </when>
        <otherwise>
            <log message="********* I'M IN SLAVE MODE - DO NOTHING"/>
        </otherwise>
    </choice>
</route>

2 个答案:

答案 0 :(得分:1)

您应该使用方法调用(在bean上调用方法)作为基于内容的路由器中的谓词,例如使用<method>

<choice>
  <when>
    <method method="isMaster" ref="mybean"/>
    ...
  </when>
  <otherwise>
    ...
  </otherwise>
</choice>

Camel支持使用任何类型的谓词,而不仅仅是简单的语言。

答案 1 :(得分:0)

你是对的。使用原始输入设置属性。然后,当您需要将其写出来时,请使用以下内容将其重新发送到邮件正文:

<setBody><simple>${property.origInData}</simple></setBody>