Camel FTP递归消费者花了太长时间

时间:2017-08-24 20:37:39

标签: java recursion ftp apache-camel

我正在尝试从FTP服务器上的某些子目录中检索文件。例如,我想仅在子目录A和C下轮询文件。

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端点成功实现了此功能,其中recursive = true in conjunction with an AntPathMatcherGenericFileFilter instance as suggested

我遇到的问题是每个子目录都在搜索(数百个),我的过滤器也只查找某些文件名。结果只在搜索到每个目录后进行过滤,这需要花费太长时间(分钟)。

有没有办法只使用可以在属性文件中维护而不搜索每个子目录的某些子目录?

1 个答案:

答案 0 :(得分:0)

我确实找到了一种可能的解决方案,使用带有Ant过滤器的Timer Based Polling Consumer的不同方法。使用此解决方案,可以在bean中使用ConsumerTemplate而不是在路径中使用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过滤器一起使用,以仅选择要使用的子目录的动态列表下的某些文件。