如何使用Mule中的ftp入站端点首先轮询最旧的文件

时间:2014-04-03 10:53:54

标签: ftp mule mule-studio

我正在使用Mule中的FTP端点处理一个用例。

我期待FTP入站端点应首先轮询最旧的文件。目前它是随机轮询文件。

是否有办法将FTP配置为轮询最旧的文件(该文件首先放在FTP共享文件夹中)?

有人可以建议我实现这个用例的解决方案。

谢谢

2 个答案:

答案 0 :(得分:1)

我相信您必须扩展默认的Mule FtpConnectionFactory类,并将您的新类设置为FTP连接器中名为connectionFactoryClass的属性。对于实际的排序,您需要扩展工厂使用的Apache FTPClient类,并使用按时间戳对文件列表进行排序的方法。覆盖FTPClient.initiateListParsing()方法可能就足够了。

答案 1 :(得分:0)

我在sftp连接器中做了类似的事情,但我在文件名中有时间戳。 我们可以尝试这种方法,如果时间戳或在某种程度上我们可以对文件进行排序。 它轮询目录带来所有文件名,在连接器中配置服务覆盖,根据时间戳然后路由对文件名进行排序。粘贴示例代码以供参考。我们也可以用ftp尝试类似的事情。

覆盖服务覆盖类

中的poll()
public void poll(){
String[] files = sftpRRUtil.getAvailableFiles(false);
List<String> orderedFileList = sortAllFileNamesByTime(files);
Map<String,String> eventStateMap=new HashMap<String,String>();
for (String file : orderedFileList){
if (getLifecycleState().isStopping()){
 break;
}
 routeFile(file);
}
...