spring integration使用XML方式

參考:

http://www.blogjava.net/xmatthew/archive/2008/12/04/243443.html

需求:   小賣部有一個訂飲料服務,客戶可以通過訂單來訂購所需要飲料。小賣部提供兩種咖啡飲料
        LATTE(拿鐵咖啡)和MOCHA(摩卡咖啡)。每種又都分冷飲和熱飲
    整個流程如下:
        1.有一個下訂單模塊,用戶可以按要求下一個或多個訂單。
        2.有一個訂單處理模塊,處理訂單中那些是關於訂購飲料的。
        3.有一個飲料訂購處理模塊,處理拆分訂購的具體是那些種類的飲料,把具體需要生產的飲料要求發給生產模塊
        4.有一個生產模塊,進行生產。
        5.等生成完成後,有一個訂單確認模塊(Waiter),把訂單的生成的飲料輸出。

大體流程如下:

一 設置一個網關接口  方法添加@Gateway(requestChannel="FirstChannle") 進行消息接收(注意:只是一個接口)

二 設置一個splitter端點連接firstChannle-secondChannle通道 在端點內將多咖啡訂單分成單咖啡訂單

三 設置一個router端點根據生產需要將secondChannle的數據路由到不同的通道(例如 按照冷熱cafe的分類將冷的輸出到coldChannle,將熱的輸出到hotChannle 直接在方法內返回"coldChannle"或"hotChannle "String即到相應通道)

四 根據生產需要 設置與路由的通道相對應的service-activator端點 這些端點統一連接一個fourthChannle通道 在service-activator端點方法內進行業務操作(例如 本次設置兩個方法(端點)與cold與hot通道進行相連 在方法類創建相應的cafe實例 再將其輸出到fourthChannle通道)

五 定義一個stream channel adaptor 裏面進行最後的操作(例如 發佈消息 輸出到控制檯 將cafe交到客戶手裏)

六  設置一個aggregator端點連接fourthChannle-stream channel adaptor 在該端點方法內將生產的產品輸出到fifthChannle  這個端點會自動將我們在splitter端點內分裂的信息根據消息頭合併(例如 將本次的單個訂單的單個cafe根據訂單信息合併爲單個訂單多個cafe再 統一輸出  可以配置completion-strategy="class" completion-strategy-method="method" 來自定義訂單(消息)合併規則)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章