這裏我們有4個不同時間戳的文件。我們只需要選擇最新的一個(第一個文件的時間戳爲2016年8月18日,使用Apache駱駝)。如何查詢多個文件中的最後修改文件併發送到apache駱駝目標端點?
這可怎麼實現的?我無法找到關於此主題的很多資源。
這裏我們有4個不同時間戳的文件。我們只需要選擇最新的一個(第一個文件的時間戳爲2016年8月18日,使用Apache駱駝)。如何查詢多個文件中的最後修改文件併發送到apache駱駝目標端點?
這可怎麼實現的?我無法找到關於此主題的很多資源。
好像使用File::lastModified()
一個文件夾並遍歷很容易進入File::listFiles()
:
public static void main(String[] args) {
final String folder = "D:\\Users\\tmp";
final File file = new File(folder);
long lastModified = Long.MAX_VALUE;
for (File f : file.listFiles()) {
if (f.lastModified() < lastModified)
lastModified = f.lastModified();
}
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
System.out.println("Oldest is " + sdf.format(lastModified));
}
在我tmp
文件夾:
data.csv 08/08/2016
data.json 28/07/2016
index.html 17/06/2016
map.csv 29/07/2016
輸出:
Oldest is 06/17/2016 09:53:10
您可以實現方法由Jordi Castilla在Came中使用過濾器提供湖請參閱文檔: http://camel.apache.org/file2.html 請參閱有關使用過濾器的部分。
檢查駱駝的File Language。看起來像file:modified
應該幫你
你可以按時間戳排序文件,然後告訴駱駝只拾取一個文件。
sortBy=file:modified&eagerMaxMessagesPerPoll=false&maxMessagesPerPoll=1
您還需要轉向eager max消息。請參閱文件2文檔中的更多詳細信息,這些選項:http://camel.apache.org/file2
如果從一個文件目錄與
from("file:...")
那麼你也需要考慮如何處理其處理後的文件做費時,應該把它被刪除/保持原樣(例如noop)。例如,如果您刪除該文件,那麼Camel將在下一個輪詢中拾取第二個最後修改的文件,依此類推。
如果您需要刪除所有文件,那麼恐怕駱駝並沒有開箱即用,您可能需要編寫一些邏輯來刪除所有這些文件。
此解決方案看起來正確...我們如何使用Apache駱駝來做同樣的事情。 –