Camel route - 过滤文件名和设置标头值

时间:2012-04-12 08:43:56

标签: apache-camel routes

我的要求似乎很简单。我需要根据我需要的输入文件的文件名来轮询单个目录;

a)设置标头值 b)将消息定向到特定的JMS队列

我已经尝试了几种不同的方法来实现这一点,但基于文档,后续应该工作..显然对我来说它不...

        <from uri="file:[some input directory]"/>

        <when>
            <simple>${file:name} contains 'new'</simple>
            <setHeader headerName="messageType">
                <constant>NEW</constant>
            </setHeader>
            <to uri="jmsbroker:queue:[queue for new items]"/>
        </when>
        <when>
            <simple>${file:name} contains 'amend'</simple>
            <setHeader headerName="messageType">
                <constant>AMEND</constant>
            </setHeader>
            <to uri="jmsbroker:queue:[queue for amended items]"/>
        </when>
        <when>
            <simple>${file:name} contains 'other'</simple>
            <setHeader headerName="messageType">
                <constant>OTHER</constant>
            </setHeader>
            <to uri="jmsbroker:queue:[queue for other]"/>
        </when>
        <otherwise>
            <bean ref="deadLetterErrorHandler"/>
        </otherwise>

    </route> 

任何帮助都非常感激。

此致 安迪

1 个答案:

答案 0 :(得分:2)

<choice><when>条件<otherwise>失踪(请参阅content based router docs

另外,您的 <route> <from uri="file:/tmp/inbox"/> <choice> <when> <simple>${file:name} contains 'new'</simple> <setHeader headerName="messageType"> <constant>NEW</constant> </setHeader> <to uri="jmsbroker:queue:newItems"/> </when> <otherwise> <to uri="jmsbroker:queue:errorQueue"/> </otherwise> </choice> </route> 部分应该只是路由到错误队列或抛出异常......

尝试这样的事情......

{{1}}