我正在做一个在Mule中使用FTP端点的用例。
我期望FTP入站终结点应该首先轮询最旧的文件。目前,它正在随机轮询文件。
有没有办法将FTP配置为首先轮询最旧的文件(文件首先放在FTP共享文件夹中)?
有没有人能给我建议一下实现这个用例的解决方案?
谢谢
发布于 2014-04-03 19:35:53
我相信您必须扩展默认的Mule类,并在FtpConnectionFactory Connector中将新类设置为名为connectionFactoryClass的属性。对于实际的排序,您需要扩展工厂使用的Apache FTPClient类,使用一个按时间戳对文件清单进行排序的方法。覆盖FTPClient.initiateListParsing()方法可能就足够了。
发布于 2014-04-04 03:44:41
我在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);
}
...https://stackoverflow.com/questions/22835367
复制相似问题