首页 文章

将原始Camel消息写入文件

提问于
浏览
0

新的骆驼,并想知道,鉴于以下路线,我如何存储进入路线的原始信息,以便记录它 . 所以在我的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 回答

  • 1

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

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

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

  • 0

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

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

相关问题