2017-08-24 178 views
0

我想从FTP服务器上的某些子目录中检索文件。例如,我想轮询的文件仅子目录下和C.骆驼FTP递归消费者花费太长时间

ROOT_DIR/A/test1.xml 
ROOT_DIR/B/test2.xml 
ROOT_DIR/C/test3.xml 
ROOT_DIR/..(there are hundreds of subdirs) 

我试图避免为每个目录的终点,因为更多的从目录可能会在将来被添加到食用。

我已经成功地在ROOT_DIR上使用单个SFTP端点执行此操作,递归= true in conjunction with an AntPathMatcherGenericFileFilter instance as suggested

我遇到的问题是每个子目录都在搜索中(其中数百个),而且我的过滤器也只能查找某些文件名。只有在搜索每个目录后才会对结果进行过滤,这会花费很长时间(分钟)。

有没有什么办法只从特定的子目录中消费,可以在属性文件中维护而不需要搜索每个子目录?

回答

0

我确实找到了一种可能的解决方案,使用不同的方法,使用带有Ant过滤器的Timer Based Polling Consumer。使用此解决方案,可以在Bean内使用ConsumerTemplate而不是在路由中使用动态sftp端点(或动态sftp端点列表)。

while (true) { 
      // receive the message from the queue, wait at most 3 sec 
      String msg = consumer.receiveBody("activemq:queue.inbox", 3000, String.class); 
. 
. 

然后可以用我现有的Ant过滤器用于选择子目录下,从消费的动态列表的某些文件。