骆驼记录列表和文件/FTP轮询

骆驼记录列表和文件/FTP轮询,ftp,apache-camel,Ftp,Apache Camel,我需要写一个骆驼路由轮询ftp服务器的音调。这种情况与本帖中描述的情况基本相同: 我使用的是SpringDSL,但我似乎无法将所有内容组合在一起。该线程中提到的模板如何相关 即使有文件协议,我也不走运。以下是我试图创建的内容: <from uri="file://C:/Temp?consumer.delay=1000"/> <recipientList parallelProcessing="true" delimiter=",">

我需要写一个骆驼路由轮询ftp服务器的音调。这种情况与本帖中描述的情况基本相同:

我使用的是SpringDSL,但我似乎无法将所有内容组合在一起。该线程中提到的模板如何相关

即使有文件协议,我也不走运。以下是我试图创建的内容:

<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
我一直收到一个错误:

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


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

标记之间的表达式必须返回不同收件人的URI。在您的例子中,
标记是常量,实际上不是一个合理的URI,这就是为什么您会得到
未知文件语言语法:://C:/Sampa?consumer.delay=1000
错误消息的原因

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

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

谢谢你,彼得。我想我还是很困惑。如何从recipientList标记实际处理文件。比方说,我只想记录从ftp服务器列表中提取的一些文件的内容。现在让我们假设列表是计算出来的,并放在一个header中,或者是一个带有simple的动态计算机。在上面带有recipientList的第一个示例中,您将把日志指令放在哪里?还有,为什么上面的url不是一个合理的url?我想我仍然不知道如何将recipientList与文件生产者或ftp生产者连接起来。我希望这会有帮助。我怀疑我们谈论的是两件不同的事情。您似乎建议使用一种机制来轮询单个源并将输入文件发送给不同的收件人。我想要的是一种机制,可以轮询许多来源,从中下载文件并将其发送给单个收件人。如果我不够清楚,很抱歉。在这种情况下,您不需要
,请参阅我的示例。然后如何处理许多动态源URI?
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");
        }
    }

}