2017-08-24 176 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過濾器用於選擇子目錄下,從消費的動態列表的某些文件。