骆驼FTP递归消费者花费太长时间
问题描述:
我想从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。
我遇到的问题是每个子目录都在搜索中(其中数百个),而且我的过滤器也只能查找某些文件名。只有在搜索每个目录后才会对结果进行过滤,这会花费很长时间(分钟)。
有没有什么办法只从特定的子目录中消费,可以在属性文件中维护而不需要搜索每个子目录?
答
我确实找到了一种可能的解决方案,使用不同的方法,使用带有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过滤器用于选择子目录下,从消费的动态列表的某些文件。