骆驼收件人列表和文件/ FTP轮询

时间:2014-02-16 17:35:25

标签: ftp apache-camel

我需要编写一个调查ftp服务器音调的Camel路由。情况几乎就是这个帖子中描述的情况:http://web.archiveorange.com/archive/v/kuUDzQRmQQIof5y9zXzG

我正在使用Spring DSL,但我似乎无法将它们拼凑在一起。该线程中提到的模板如何相关?

即使使用文件协议,我也不幸运。这是我试图创造的:

<from uri="file://C:/Temp?consumer.delay=1000"/>
            <recipientList parallelProcessing="true" delimiter=",">
                <simple>file://C:/Sampa?consumer.delay=1000</simple>
            </recipientList>

我一直收到错误:

未知的文件语言语法://C:/Sampa?consumer.delay = 1000

有什么建议吗?理想情况下,非常感谢使用收件人列表和文件或ftp的简单路由。

1 个答案:

答案 0 :(得分:1)

<recipientList/>标记之间的表达式必须返回不同收件人的URI。在您的情况下,您的<simple/>标记是常量,实际上不是合理的URI,这就是您收到Unknown file language syntax: //C:/Sampa?consumer.delay=1000错误消息的原因。

一种好方法是使用可动态更新的标头,例如

<route>
    <from uri="file:src/data2?noop=true"/>
    <recipientList parallelProcessing="true" delimiter=",">
        <header>myHeader</header>
    </recipientList>
</route>

查找有关收件人列表模式here的更多信息。

修改

recipientList/>仅用于在到达不同目标的路径中动态分发消息。如果需要动态定义不同文件目录或FTP服务器等源,则可以使用Camel的Java API动态设置路由

pzbkuc class DynamicRouteBuilder extends RouteBuilder {

    private final String[] fileNames;

    public DynamicRouteBuilder(final String[] fileNames) {
        this.fileNames = fileNames;
    }

    @Override
    public void configure() {
        for (final String fileName : this.fileNames) {
            from("file:" + fileName).to("file:targetDirectory");
        }
    }

}