MQSeries 簡 介
(史蒂芬, idealist@gcn.net.tw)
1.MQSeries是什麼?
MQSeries是IBM所推出的產品,它的功能主要在於提供不同平台間,資料的非同步傳輸。例如: AS/400與OS/390就可透過MQSeries彼此非同步傳遞資料,而不需在意其傳輸的通訊協定是什麼。在介紹MQSeries之前,首先讓我們先了解幾個專有名詞。
不同平台的應用程式透過Message Queue,如圖1所示,將Message傳入Queue Manager裡,由另一平台的應用程式抓取下來,如此達到資料的傳遞,又因為應用程式將Message傳入Queue Manager後,Message就由Queue Manager來管理,所以,這時候就算負責接收Message的應用程式沒有啟動,也不會造成Message遺失,Queue Manager會將Message一直放在Queue裡,直到負責接收Message的應用程式來抓取為止。在這整個Message傳輸的過程,因為完全由MQSeries控制,我們完全不需在意其傳輸的通訊協定是什麼。

圖1
2.MQSeries如何工作?

圖2
如圖2,Client端的MQ AP,傳Message到Request Queue,向Server端的AP提出到主機查詢的要求,Server端的AP取得Message後,到主機取得相關資料傳到Reply Queue,Client端的AP再從Reply Queue取得所要的資料。這是最簡單也是最一般的MQ運用,就是將2-tier的資料存取方式改為3-tier(n-tier)的方式,中間以MQ當媒介。
3.MQSeries在跨平台上的運用

圖3
如圖3所示,Client端的AP要存取不同平台的資料時,一律透過MQ Server,由Server端的AP取得資料後再回傳給Client端的AP,這樣的架構最大好處在於Client端的AP只要對MQ Server做存取,不需同時對不同的平台做存取,可大符簡化Client端AP存取資料的複雜度。
如圖3所示的跨平台存取是透過API,但是如果該平台並沒有提供API可供存取時,就必須採取如圖4的方式,在不同平台上各架一個MQ Server,再由MQ Server透過網路傳輸來達到跨平台的存取。

圖4
4. MQSeries的跨平台能力
在Message Queue的產品裡,除了IBM MQSeries外,Microsoft的MSMQ也日漸受到重視,但是MQSeries在跨平台的能力卻是MSMQ所遠遠不及的。 MQSeries支援的作業系統有OS/390、OS/400、AIX、HP-UX、Solaris、Digital UNIX、Windows NT、OS/2、Windows…。支援的通訊協定有NetBIOS、TCP/IP、SPX、LU6.2…。支援的程式語言有Visual Basic、C、C++、Java、COBOL、PL/1…;同時還提供ActiveX,因此只要能使用ActiveX的語言,都可使用MQSeries。
5. MQSeries程式的撰寫
MQSeries提供13個API可供使用,不過,常用的只有6個,分別是MQCONN、MQDISC、MQOPEN、MQCLOSE、MQPUT、MQGET。其使用方式通常為
a. 呼叫MQCONN連接Queue Manager
b. 呼叫MQOPEN打開一個Queue
c. 呼叫MQPUT將Message放進Queue裡
d. 呼叫MQGET從Queue取出Message
e. 呼叫MQCLOSE關閉Queue
f. 呼叫MQDISC中斷與Queue Manager的連接
因為需要學習的API相當少,且任何語言的使用方式都一樣,所以程式的撰寫與不同語言間的移植都相當簡單。