文/杜叢強(qiáng) 曾慶妍
IBM WebSphere MQ是一款基于消息傳送或消息隊列的商業(yè)通訊中間件,WebSphere MQ 技術(shù)可以廣泛的實施在IBM平臺和非IBM平臺上。WebSphere MQ主要功能是在孤立的應(yīng)用程序之間傳送消息,消息可以在不同的應(yīng)用軟件、計算機(jī)系統(tǒng)和不同的網(wǎng)絡(luò)協(xié)議之間進(jìn)行傳遞。WebSphere MQ 提供了面向業(yè)務(wù)的信息技術(shù)框架,用戶可以簡單方便的基于該框架開發(fā)出高效、可靠的分布式應(yīng)用程序系統(tǒng)?;赪ebSphere MQ的應(yīng)用程序更容易開發(fā)和維護(hù),可以對商業(yè)問題進(jìn)行有效的模擬。
WebSphere MQ支持在應(yīng)用程序的客戶機(jī)和服務(wù)器兩端對其進(jìn)行配置,客戶端通過MQI通道與服務(wù)器進(jìn)行通訊。客戶機(jī)組件允許操作系統(tǒng)上運行的應(yīng)用程序通過MQI調(diào)用另一個操作系統(tǒng)上的隊列管理器。WebSphere MQ服務(wù)器是為客戶提供排隊服務(wù)的隊列管理器,在服務(wù)器與客戶機(jī)之間有專用的通信鏈路。當(dāng)客戶機(jī)連接到服務(wù)器時,客戶機(jī)的應(yīng)用程序發(fā)出與本地應(yīng)用程序相同的MQI調(diào)用。當(dāng)客戶機(jī)發(fā)出MQ連接請求MQCONN調(diào)用時,會連接到指定的隊列管理器,隊列管理器處理從連接請求返回的其他MQI調(diào)用。
隊列管理器可以設(shè)置特定的觸發(fā)條件,如果隊列的觸發(fā)條件被觸發(fā)并且該隊列被設(shè)置成觸發(fā)隊列,則隊列管理器會將觸發(fā)消息發(fā)送到啟動隊列中。本地或遠(yuǎn)程的應(yīng)用程序A向應(yīng)用隊列中PUT一條消息,當(dāng)隊列為空時將會形成觸發(fā)事件,同時產(chǎn)生一條對應(yīng)的觸發(fā)消息,觸發(fā)消息包含進(jìn)程定義的具體信息。隊列管理器創(chuàng)建觸發(fā)消息,并把它PUT到啟動隊列中,觸發(fā)監(jiān)控器從啟動隊列中GET出觸發(fā)信息對其進(jìn)行處理,發(fā)出啟動應(yīng)用程序B的命令,應(yīng)用程序處理應(yīng)用隊列中的消息。
圖1:商業(yè)銀行核心系統(tǒng)數(shù)據(jù)推送功能示意圖
商業(yè)銀行核心系統(tǒng)要求數(shù)據(jù)推送具有很高的準(zhǔn)確性和實時性。當(dāng)核心業(yè)務(wù)系統(tǒng)某些信息發(fā)生變動時,需要及時通知其他系統(tǒng),以便各系統(tǒng)以此信息為依據(jù)開展業(yè)務(wù)或進(jìn)行風(fēng)險管理。目前大多數(shù)商業(yè)銀行是采用ESB系統(tǒng)輪詢發(fā)起聯(lián)機(jī)交易到核心系統(tǒng)查詢消息檔,發(fā)現(xiàn)需要推送的消息時,獲取待推送信息并發(fā)送給短信通知平臺。這種方式存在的問題是不能保證數(shù)據(jù)推送的時效性,同時也加重了ESB系統(tǒng)和核心系統(tǒng)的負(fù)擔(dān)。
本文的目標(biāo)是實現(xiàn)數(shù)據(jù)的主動推送機(jī)制。該機(jī)制的優(yōu)點在于,只有當(dāng)核心系統(tǒng)信息發(fā)生變動時,才觸發(fā)推送;減少了各系統(tǒng)之間的通訊量,最大限度的降低了資源的占用;對于主機(jī)推送的重要信息,系統(tǒng)會在推送失敗之后進(jìn)行補(bǔ)救,確保信息不丟失,有效的保證了數(shù)據(jù)推送的可靠性和安全性。
應(yīng)用程序負(fù)責(zé)組織推送消息并將消息保存到數(shù)據(jù)庫的消息推送檔中,核心系統(tǒng)程序在交易完成時將待發(fā)送消息寫入本地的消息隊列,再由監(jiān)控程序?qū)懭隡Q Client中的隊列,ESB總線系統(tǒng)根據(jù)定義的報文格式將FORM解析成XML格式后,根據(jù)消息類型以及訂閱系統(tǒng)的訂閱方式進(jìn)行消息發(fā)布。消息推送的具體流程如圖1。
(1)核心系統(tǒng)應(yīng)用程序需要消息推送時,調(diào)用平臺的消息登記程序,將待推送的消息登記到消息推送檔中。
(2)核心系統(tǒng)在交易正常完成結(jié)束后,對于需要實時推送的消息,通過消息推送程序?qū)⑼扑托畔懭氡镜叵㈥犃兄?,消息隊列監(jiān)控程序獲取到推送消息后將其寫入MQ Client中的隊列。
(3)對于異步推送的消息,將由核心的輪詢進(jìn)程定時掃描消息推送檔,一旦讀取到待推送的消息記錄時,將待推送消息記錄寫入到MQ Client中的隊列。
(4)MQ Client 將隊列中的推送消息發(fā)送到ESB總線系統(tǒng)的 MQ Server中的隊列。
(5)ESB總線系統(tǒng)通過MQ Server將推送消息發(fā)送請求上送到信息交互平臺或者其他訂閱應(yīng)用系統(tǒng)。
本文首先介紹了IBM WebSphere MQ的體系框架,然后提出了一種商業(yè)銀行核心系統(tǒng)數(shù)據(jù)推送方案,該方案能夠有效的保證數(shù)據(jù)推送的可靠性和時效性。由于采用了IBM WebSphere MQ消息中間件技術(shù),降低了整個核心系統(tǒng)和ESB系統(tǒng)的負(fù)載壓力,使得整個核心系統(tǒng)和外圍系統(tǒng)之間具備良好的兼容性和可擴(kuò)展性,可以靈活的應(yīng)對系統(tǒng)功能或性能方面新的變化。