我需要编写一个调查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的简单路由。
答案 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");
}
}
}