Apache camel 将原始驼峰消息写入文件

Apache camel 将原始驼峰消息写入文件,apache-camel,Apache Camel,刚接触camel,我想知道,鉴于下面的路由,我如何存储进入路由的原始消息以记录它。因此,在下面的when条件中,我调用一个bean方法,如果该方法返回true,我想将原始消息写入一个文件。下面的示例希望编写来自bean调用的响应,而不是进入路由的原始消息 我正在考虑使用下面这样的setProperty,但是我不知道如何使用file组件写出它 <setProperty propertyName="origInData"> <simple>${body}<

刚接触camel,我想知道,鉴于下面的路由,我如何存储进入路由的原始消息以记录它。因此,在下面的when条件中,我调用一个bean方法,如果该方法返回true,我想将原始消息写入一个文件。下面的示例希望编写来自bean调用的响应,而不是进入路由的原始消息

我正在考虑使用下面这样的setProperty,但是我不知道如何使用file组件写出它

<setProperty propertyName="origInData">
        <simple>${body}</simple>
</setProperty>

${body}
任何建议都很好。谢谢

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

${body}==true

你说得对。使用原始输入设置属性。然后,当您需要将其写出来时,使用如下方式将其带回消息正文:

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

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


...
...

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

Claus将其改为方法调用,但我相信setProperty会像Petter提到的那样工作。你的男人!谢谢
<choice>
  <when>
    <method method="isMaster" ref="mybean"/>
    ...
  </when>
  <otherwise>
    ...
  </otherwise>
</choice>