多應用單MQ使用場景

如上圖所示,MQ獨立安裝,或者與其中一個應用同處一機。Application1與Application2要進行通信,但因為跨系統,所以引入中間件來實現需求。
Application1需要連接MQ,並將消息放入隊列Queue中,Application2同樣連接MQ,監聽在Queue隊列上,一旦發現有消息進入則取出該消息進行處理。
下面將給出創建隊列管理器和隊列的示例:
定義隊列管理器名稱為Qm1,本地隊列名稱為Queue,服務器連接通道CHAN_SERVER_CON,監聽端口為1414,死性隊列QDEAD
搭建MQ隊列可以使用圖形用戶界面也可以使用命令進行,此處使用命令進行。
1.創建MQ隊列管理器,使用mqm用戶登錄MQ所在機器
mqm@localhos ~>$crtmqm Qm1
2.啟動Qm1隊列管理器
mqm@localhos ~>$strmqm Qm1
3.進入Qm1命令行
mqm@localhos ~>$runmqsc Qm1
4.定義一個本地隊列Queue
DEFINE QLOCAL ('Queue') DEFPSIST (YES) MAXDEPTH(100) REPLACE
'Queue'為隊列名稱,至於使用單引號的原因是,如果在shell腳本中不加單引號的話,最后創建出來的會變成大寫QUEUE.。DEFPSIST(YES)表示該隊列為持久化隊列,MAXDEPTH(100)代表該隊列的最大深度為100,如果消息超過了100的話,則會被放入死性隊列。
5.在定義一個死性隊列QDEAD
DEFINE QLOCAL ('QDEAD') DEFPSIST (YES) MAXDEPTH(100) REPLACE
6..給Qm1設置指定的死性隊列,當消息無法到達指定的Queue中時,會被放入死性隊列QDEAD
ALTER QMGR DEADQ(‘QDEAD’)
7.定義服務器連接通道CHAN_SERVER_CON,該通道的用途是供應用程序連接的,應用程序通過服務器連接通道從而連接MQ。
DEFINE CHANNEL(‘CHAN_SERVER_CON’) CHLTYPE(SVRCONN) REPLACE
8.定義監聽器LISTENER.TCP,該端口1414應用程序連接時需要指定。
DEFINE LISTENER('LISTENER.TCP') TRPTYPE(TCP) CONTROL(QMGR) PORT(1414) REPLACE
9.啟動監聽器LISTENER.TCP
START LISTENER('LISTENER.TCP')
到此為止這個需求中的MQ隊列管理器已經創建完畢了。如果在創建過程中出現錯誤,或者想停止隊列管理器,或者想刪除重新創建,則執行下述命令:
1.刪除前先停止隊列管理器
ctrl+c可以沖命令行跳出,或者輸入end回車也可以。
mqm@localhos ~>$endmqm Qm1 停止隊列管理器
mqm@localhos ~>$dspmq 查看當前隊列管理器的執行狀態,當隊列管理器狀態變為Ended normally時才能刪除
mqm@localhos ~>$dltmqm Qm1 刪除隊列管理器,它會級聯刪除該隊列管理器中的隊列和監聽器等等。
2.至於java如何與MQ通信,如何連接MQ隊列此處不做過多的闡述了!