IBM的WebSphere MQ產品可以用來方便地實現分布式異構系統之間的消息傳遞。對于大型的分布式系統,使用MQ進行數據通信是可以說是非常有效的,而且適用于異構環境(如NT和多種UNIX之間通信)。本文主要介紹:MQ的核心組件介紹、MQ環境的搭建以及利用java對MQ隊列治理器的操作的程序設計,希望能起到拋磚引玉的作用。
第一部分、MQ的核心組件介紹
MQ的核心組件包括:隊列治理器(QueueManager)、隊列(Queue)、通道(Channel)、消息(Message)和集群(Cluster)。
隊列治理器(QueueManager)提供隊列服務,治理屬于該隊列治理器的隊列和通道等所有MQ對象。
隊列(Queue)是用于存儲消息(Message)的數據結構,有四種類型:本地隊列(LocalQueue)、遠程隊列(RemoteQueue)、別名隊列(AliasQueue)和模型隊列(ModelQueue),最常用到的是本地隊列和遠程隊列。
通道(Channel)是提供了從一個隊列治理器到其他隊列治理器的數據傳輸路徑。通道類型有若干種,其中常用的是發送方通道(SenderChannel)和接收方通道(ReceiverChannel)。
消息(Message)是應用程序之間傳遞的一系列字節數據,MQ傳遞的消息有兩部分組成:消息描述符(MessageDescriptor)和應用數據(applicationData)。默認最大傳遞的消息大小是4MB,可以根據需要進行設置,最大可到100MB。
集群(Cluster)是分布式網絡上的多個隊列治理器的集合。(本文不涉及集群的具體內容)
第二部分、MQ環境的搭建
本文搭建的環境以Windows平臺為例,涉及其他平臺的請讀者查閱相關文檔。
具體搭建步驟:
1、根據安裝向導安裝IBM WebSphere MQ v5.3軟件,安裝路徑為:D:/IBM/WebSphere MQ。
2、安裝成功后,請使用命令echo %classpath%檢查classpath變量中是否已經把D:/IBM/WebSphere MQ/Java/lib下面的jar文件包含進來,如沒有包括請進行手工添加,本文要用到的2個要害的是:com.ibm.mq.jar和connector.jar。使用echo %path%檢查path變量中是否已經把D:/IBM/WebSphere MQ/bin包含進來,如沒有包括請進行手工添加。
3、創建一個配置文本文件,文件名為config.txt,內容如下(請讀者到附件下載):
* 更改QM的字符集編碼(CCSID)
ALTER QMGR FORCE CCSID(1381)
* 定義本地隊列
DEFINE QLOCAL('LQ_SAMPLE') REPLACE +
USAGE(normal) +
DEFPSIST(YES)
4、創建一個批處理文件,文件名為mqsetup.bat,內容如下(請讀者到附件下載):
rem 創建缺省隊列治理器,擁有100個句柄,使用線性循環日志,容量為 1024 × 4 K/文件,主文件10個,輔文件20個
echo Creating QM_SAMPLE
crtmqm -t 5000 -h 100 -lc -lf 1024 -lp 10 -ls 20 -q QM_SAMPLE
rem 設置cpu個數為1
setmqcap 1
rem 啟動隊列治理器
echo Starting Queue Manager
strmqm QM_SAMPLE
rem 從配置文件中讀入初始化命令
echo Running config
runmqsc QM_SAMPLE < config.txt
rem 停止隊列治理器
amqmdain end QM_SAMPLE
rem 將隊列治理器設置為自動啟動
amqmdain auto QM_SAMPLE
rem 創建隊列偵聽器,使用1414端口
amqmdain crtlsr QM_SAMPLE -t TCP -p 1414
rem 修改MQ參數,采用AdoptNewMCA方式
amqmdain reg QM_SAMPLE -c add -s Channels -v AdoptNewMCA=ALL
rem 修改MQ參數,采用KeepAlive方式
amqmdain reg QM_SAMPLE -c add -s TCP -v KeepAlive=Yes
rem 重新啟動隊列治理器
amqmdain start QM_SAMPLE
5、運行mqsetup.bat,檢查運行結果輸出是否無誤,如有錯誤,請仔細根據上述步驟進行檢查并糾錯。
6、在命令窗口中,輸入dspmq,看是否顯示如下結果:
QMNAME(QM_SAMPLE) STATUS(正在運行)
7、在命令窗口中,輸入runmqsc回車,進入mq交互操作環境,輸入display queue(LQ_SAMPLE),看是否顯示如下結果:
AMQ8409: 顯示隊列細節。
DESCR(WebSphere MQ Default Local Queue)
PROCESS( ) BOQNAME( )
INITQ( ) TRIGDATA( )
CLUSTER( ) CLUSNL( )
QUEUE(LQ_SAMPLE) CRDATE(2006-10-31)
CRTIME(16.17.01) ALTDATE(2006-10-31)
8、輸入end退出mq交互操作環境。
自此,NT平臺上的最基本的MQ環境搭建完成了。
新聞熱點
疑難解答