2014-10-09 95 views
1

我正在處理一個自動將文件上傳到SFTP服務器的項目。我的項目現在按照最初的要求規範進行生產和運作。我的項目從預定義位置獲取txt文件。現在由於SFTP服務器上的大小限制,現在必須在上傳之前對txt文件進行壓縮。Apache Camel文件格式

我現在想改變我的駱駝路線,以迎合txt文件,但也爲xls,csv和Zip文件。

我該怎麼做?

目前我的路線如下所示:

from("quartz://myscheduler?cron={{cron}}") 
.pollEnrich("file:{{pickuplocation}}?moveFailed=error/${file:name.noext}_${date:now:yyyyMMddHHmmssSSS}.${file:ext}&move=SFTPCompleted/${date:now:MMM}-${date:now:yyyy}/${file:name.noext}_${date:now:yyyyMMddHHmmssSSS}.${file:ext}") 
     .setHeader("CamelFileName", simple("${file:name}")) 
     .setHeader("RouteID",constant("Route ID"))   
     .multicast() 
      .to("sftp://"+username+"@"+SftpLocation+"password="+password+"&stepwise=false&disconnect=true&fileName=${file:name.noext}.txt") 
     .end() 

TIA

回答

2

我不明白爲什麼你用複製文件的這樣一個複雜的方式。如果我沒有記錯的話,你可以只使用這樣的:

from("file:{{pickuplocation}}?moveFailed=error/${file:name.noext}_${date:now:yyyyMMddHHmmssSSS}.${file:ext}&move=SFTPCompleted/${date:now:MMM}-${date:now:yyyy}/${file:name.noext}_${date:now:yyyyMMddHHmmssSSS}.${file:ext}) 
.to("sftp://"+username+"@"+SftpLocation+"password="+password+"&stepwise=false&disconnect=true") 

這將皮卡在pickupLocation目錄和FTP compenent任何文件將寫入具有相同名稱的遠程服務器上的文件。

您可以使用文件組件的「包括」參數設置一個正則表達式匹配只有某些類型的文件:http://camel.apache.org/file2.html

+0

謝謝你這麼多海爾特對您有所幫助。現在它按照我的預期行事。你是明星。 – 2014-10-10 09:57:02

+0

不客氣。享受駱駝! – 2014-10-10 12:17:32