【轉】MQ 與傳統 CICS 應用的連接

轉自:http://hi.baidu.com/cooltown/blog/item/810f628210caa0aa0cf4d2a5.html

在使用 IBM 主機的大型企業裏,一般採用 CICS 作爲聯機交易支持系統,經過長年 IT 的發展,CICS 系統裏積累了大量的企業核心業務應用,MQ 作爲應用集成的重要工具,是否能夠方便靈活地與 CICS 中的程序進行連接,是個重要問題。

在主機上,MQ 與 CICS 有很好的應用集成,可以方便地從 CICS 中使用 MQ 資源,也可以容易地從 MQ 中調起 CICS 程序進行業務處理。MQ 提供兩種主要的方式與 CICS 連接方式,一種稱作 CICS adapter,通過 CICS adapter 的功能,CICS 應用程序可以訪問 MQ 隊列裏的數據;另一種稱作 CICS bridge,通過 CICS bridge 的功能,向某個 MQ 隊列發送包含 COMMAREA 的消息,從而自動觸發起 CICS 中處理程序運行,並自動把 CICS 程序返回的 COMMAREA 寫到返回隊列裏去,這個 CICS 程序不必爲 MQ 調用做任何改變。

CICS adapter

CICS adapter 把 CICS 與某個 MQ 隊列管理器相連,使得 CICS 程序可以通過標準的 MQI應用接口訪問 MQ 資源,CICS adapter 本身包括:

  • 一組控制功能,用來管理 MQ 與 CICS 的連接。
  • MQI stub 一組函數庫,通過他們,CICS 程序可以調用 MQ 資源。


圖 1 CICS adapter 程序框架

上面圖 1 中的例子給出了一個使用 CICS adapter 程序的例子。它可以通過MQGET()、MQPUT() 等 MQI 調用接口來訪問 MQ 資源。MQ 還會在 CICS 中安裝一些交易程序,CKQC 交易用來管理 CICS/MQ 的連接和對 CICS adapter 自身進行管理。CKTI 交易是任務初始化程序,它用來監控 MQ 觸發信息,如果某個 MQ 隊列上定義的觸發程序是 CICS 程序,觸發條件符合時將由 CKTI 初始化運行 CICS 程序。

實際中,CICS adapter 的主要用法一般有兩種,一種是由 CICS 程序主動發起,它讀取隊列信息進行處理,或者向某個隊列發送響應/通知信息,比如 CICS 中的取款程序可以把帳戶取款事件寫入 MQ 隊列,通過 MQ 傳遞到其它系統進行處理;另一種是 MQ 應用主動發起,向某個輸入隊列放入消息,這個隊列上定義了觸發器,指定將被觸發的是某個 CICS 程序,當 MQ 的觸發監控程序 CKTI 發現有消息到達,它會自動啓動相應的 CICS 程序,這個 CICS 程序自己到隊列裏讀取數據進行處理,最後把返回數據寫到返回隊列裏去。

CICS bridge

WebSphere MQ-CICS bridge 提供了一種方便的手段,使 MQ 應用可以調用 CICS 程序並傳遞參數,這個 CICS 程序可以是現有的使用 COMMAREA 傳遞參數的任何程序,它裏面不必做任何 MQ 調用。使用 MQ-CICS bridge 可以很容易地把現有的 CICS 傳統 DPL 應用程序提供給 MQ 應用程序調用,不必對現有程序做任何改寫和重新編譯。對於傳統的面向 3270 終端的 CICS 程序,也可以通過 3270 bridge 格式進行調用,而不必對應用進行修改。


圖 2 CICS bridge 結構

如上圖 2 所示,使用 MQ-CICS bridge 時要定義一個輸入隊列和一個輸出隊列,並對 MQ-CICS bridge 進行配置。MQ 應用程序向輸入隊列中放入一個包含需要傳遞給被調用的 CICS 程序的 COMMAREA 數據的消息,MQ 提供的 Bridge Monitor 程序會監控到有新消息到達,它會 START 一個 MQ 提供的 Bridge Task 處理程序,這個程序從隊列中讀取消息,取得應用所需的 COMMAREA,然後使用 LINK 命令去調用指定的 CICS 業務程序,這個業務程序處理完畢後,在 COMMAREA 裏返回結果數據,Bridge Task 處理程序會把含有返回 COMMAREA 的消息寫入返回隊列,最後 MQ 應用從返回隊列中取走數據進行顯示或進一步處理。在這個過程中,對 MQ 應用來看,它把包含輸入 COMMAREA 的數據寫到一個隊列,就可以到另一個隊列去讀取包含返回 COMMAREA 的結果數據;對 CICS 業務應用程序而言,它是從 COMMAREA 接收數據,從 COMMAREA 返回數據,與平常的運行一樣,到底是被其他業務應用程序調用的還是被 MQ-CICS bridge 調用的,對它沒有分別。

通過 MQ-CICS bridge 調用 CICS 程序,不但可以實現單個 CICS 程序的調用,還可以實現一次調用多個 CICS 程序,一次傳遞一個 COMMAREA 進入,一次得到多個 COMMAREA 的返回。

使用 MQ-CICS bridge 可以很方便地把現有 CICS 程序公佈在網絡上對外服務,而不必對CICS 程序進行任何修改。MQ-CICS bridge 爲企業應用提供了一種快速方便的 MQ CICS 連接。

其他相關信息:

http://hi.baidu.com/cooltown/blog/item/2b331338524c992cb8998fa4.html 第 1 部分: 異步通信與負載均衡

http://hi.baidu.com/cooltown/blog/item/810f628210caa0aa0cf4d2a5.html 第 2 部分: MQ 的安全性、應用的連接、實現 SOA 服務以及系統監控

http://hi.baidu.com/cooltown/blog/item/66abcd034aefd97f3912bbc2.html 第 3 部分: 企業級應用設計構架

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