我正在使用Mule中的FTP端点处理一个用例。
我期待FTP入站端点应首先轮询最旧的文件。目前它是随机轮询文件。
是否有办法将FTP配置为轮询最旧的文件(该文件首先放在FTP共享文件夹中)?
有人可以建议我实现这个用例的解决方案。
谢谢
答案 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);
}
...