天天看點

mule in action翻譯14 : 3.2 使用檔案傳輸mule in action翻譯14 :  3.2  使用檔案傳輸

mule in action翻譯14 :  3.2  使用檔案傳輸

    讀寫檔案是應用程式擷取或寫出資料最常用的方式。

   本節學習如何使用mule的檔案傳輸實作讀、寫、移動、删除的操作。

    配置屬性   本書中你會看到如下的屬性配置:

    host="${imap.host}"

    這些屬性占位符是為了避免寫死。屬性檔案的位置的配置如下:

    <context:property-placeholder location="/mule.properties"/>

 檔案傳輸的一些配置屬性如表 3.1 所示。

mule in action翻譯14 : 3.2 使用檔案傳輸mule in action翻譯14 :  3.2  使用檔案傳輸
mule in action翻譯14 : 3.2 使用檔案傳輸mule in action翻譯14 :  3.2  使用檔案傳輸

     一些Prancing Donkey公司的員工還在使用Excel記錄支出。這對公司的公司的開發人員是個 特别沮喪的事情,他們本想享受Arnor Accounting REST風格 API帶來便利。但更糟糕的是, 員工一直是把報帳單電郵到會計部門。 會計部門人員則疲于過濾郵件中的報帳單附件, 找到這些報帳單後還要放到一個網絡共享目錄。此外還有一個問題,報帳單命名并不統一。

     我們來看一個流,它可以輪詢接受報帳單的檔案夾,并會把不符合命名規範的報帳單複制到另外

 一個檔案夾。見圖 3.5  

mule in action翻譯14 : 3.2 使用檔案傳輸mule in action翻譯14 :  3.2  使用檔案傳輸

 Listing 3.1 Using the file transport to move files from one directory to another 

<flow name="copyExpenseReports">
     <--!注釋1  每分鐘一次輪詢檔案夾 ./data/expenses/1/in 查找新檔案-->
     <file:inbound-endpoint path="./data/expenses/1/in"  pollingFrequency="60000">
     
    <--!注釋2  隻接受字尾是 .xls擴充名的檔案-->			
    <file:filename-regex-filter pattern=".*xls$"  caseSensitive="false"/>
    </file:inbound-endpoint>
    <--!注釋3  把檔案寫到/data/expenses/out  把新檔案命名為時間戳加上原檔案名-->
    <file:outbound-endpoint path="./data/expenses/out"
                   outputPattern="EXPENSE-REPORT-
		  #[org.mule.util.DateUtils.getTimeStamp('dd-MM-yy_HH-mm-ss.SSS')]
				-#[inboundProperties['originalFilename']]"/>
    </flow>      

    這個流的消息源是一個 檔案 inbound endpoint ,

   注釋1處是輪詢檔案夾  /data/expenses/1/in以發現新檔案,頻率是每分鐘一次。

   注釋2處 定義了一個filename-regex-filter,指定endpoint隻接收字尾名為.xml 的檔案,并會忽略大小寫。

   注釋3處,outbound endpoint 格式化檔案名為時間戳加上原檔案名。

        為了得到後者你引用了originalFilename--這是由inbound endpoint填充進去的。

  預設情況下,一個檔案inbound endpoint向outbound endpoint傳送檔案時會在源檔案夾把檔案剪切掉。

可以通過設定檔案 連接配接器的 autoDelete屬性為false來改變這種預設行為。

但要小心,這回導緻inbound endpoint 重複讀取檔案,直至檔案被從源檔案夾總删掉。

   fileAge參數允許你讀取檔案存在時長超過某毫秒的檔案。例如 設定為 5000 ,将導緻檔案inbound endpoint隻處理 檔案存在時長超過5分鐘的檔案。

    多個mule節點輪詢同一個共享檔案系統

   第8章你将看到 把同一個mule應用部署到多個mule執行個體中。這種場景下必須要小心,需要協調多個節點的

   狀态,避免發生同時讀、删、移動檔案。    mule企業版的的叢集功能将會自動的協調和分散開mule應用對

   檔案傳輸的使用。

繼續閱讀