1

我正在从 FTP 下载文件。我能够下载具有定义模式或定义名称的文件,然后通过 Java 处理这些文件。

我面临的问题是我需要每周下载一个新文件。文件名类似于"constant-prefix-2013-W51.zip". 我现在的 XML 是这样的;

<ftp:inbound-endpoint 
    host="${ftp.host}" 
    port="${ftp.port}" 
    path="${ftp.pathInbound}" 
    user="${ftp.user}" 
    password="${ftp.password}" 
    responseTimeout="10000" 
    doc:name="KBB_FTP" >

    <file:filename-wildcard-filter pattern="MyFile-2013-W51.zip"/>

</ftp:inbound-endpoint>

流程参考:Mule:如何将文件从 FTP 传递到 Mule ESB 中的 Java 类?

此代码成功下载请求的文件。但我需要在文件模式中动态添加yearand值。week

我尝试了以下模式但没有成功;

 1. pattern="MyFile-2013-W#[server.dateTime.weekOfYear].zip" 

 2. pattern="MyFile-2013-W${server.dateTime.weekOfYear}.zip"

我知道第二种模式是完全错误的,因为它不是.properties文件中定义的属性。我还在 mule-app.properties 中添加了一个属性,如下所示

 calendar.weekOfYear=#[server.dateTime.weekOfYear]

并使用以下模式;

 3. pattern="MyFile-2013-W${calendar.weekOfYear}.zip"

这种方式都不起作用,我想动态添加年份值2013和周值51,这在任何情况下都不会发生。附加到 fileName 的值仅在字符串模式之上,而不是任何数字..

4

2 回答 2

1

file:filename-wildcard-filter不支持 MEL 表达式。改用 an expression-filter,如下所示:

<message-filter throwOnUnaccepted="false">
    <expression-filter
        expression="#[message.outboundProperties.originalFilename == 'MyFile-2013-W'+server.dateTime.weekOfYear+'.zip']" />
</message-filter>
于 2013-12-20T15:29:23.807 回答
0

使用表达式过滤器 #[server.dateTime.getWeekOfYear()].zip 您可以使用此表达式并自定义您的时间格式。

于 2015-05-28T09:08:53.117 回答