linux安裝IBM Webshere MQ以及配置

一 、安裝

登錄root用戶登錄(必須使用root用戶)

1.上傳MQ安裝包

命令:cd /tmp/

上傳本地MQ安裝包到該目錄下

2.解壓安裝包

命令:mkdir MQ

命令:cd MQ

命令:tar -zxvf WS_MQ_V8.0.0.9_LINUX_ON_X86_64_IM.tar.gz

3.執行接受許可腳本

命令:./mqlicense.sh -accept

 

4.安裝WebSphere MQ for linux服務器

命令:rpm -ivh MQSeriesRuntime-8.0.0-9.x86_64.rpm

命令:rpm -ivh MQSeriesSDK-8.0.0-9.x86_64.rpm

命令:rpm -ivh MQSeriesServer-8.0.0-9.x86_64.rpm

 

注:安裝完成後,相關文件會被自動安裝在/opt/mqm下,在安裝。

說明:MQSeriesRuntime-6.0.0-0.i386.rpm時候,安裝程序爲系統自動創建了一個mqm用戶和mqm組,安裝完畢後,需要使用該用戶來進行MQ的配置。

 

命令:rpm -ivh MQSeriesClient-8.0.0-9.x86_64.rpm

 

5.安裝 WebSphere MQ 樣本程序

(其中包括amqsput、amqsget、amqsgbr和amqsbcg等):

命令:rpm -ivh MQSeriesSamples-8.0.0-9.x86_64.rpm

說明:樣本程序安裝在/opt/mqm/samp/bin 中。

6安裝MQ其他軟件包

命令:rpm -ivh MQSeriesMan-8.0.0-9.x86_64.rpm

命令:rpm -ivh MQSeriesJava-8.0.0-9.x86_64.rpm

說明:上面最後一步安裝的是JDK運行環境,如果已經有相同或更高版本的JDK,不需要再安裝。

重要:

這兩個命令是導入導出證書使用的命令由此包生成,執行順序不能變

rpm -ivh  MQSeriesJRE-8.0.0-4.x86_64.rpm

rpm -ivh MQSeriesGSKit-8.0.0-4.x86_64.rpm

 

二、配置環境

1.修改mqm用戶密碼

安裝過程創建了一個名爲mqm 的用戶和一個同樣名爲mqm 的組,此時,新用戶是被鎖定的,必須設置一個密碼來解鎖,這樣才能正常使用該用戶。

用passwd 命令:

[root@localhost mq]# passwd mqm

說明:以上操作均在root用戶下操作,至此MQ7.0安裝結束。MQ的配置相關命令操作均在mqm用戶下。

2.修改環境變量

命令:vi /etc/profile

添加:

MQ_HOME=/opt/mqm/bin

PATH=$MQ_HOME:$PATH

export PATH

wq保存退出

命令:source /etc/profile

至此,root的操作就完成了!休息一下吧,算了,接着切換mqm賬戶繼續操作開始配置隊列管理器!!!

三、授權

1.切換用戶mqm:

su – mqm

2.將文件或目錄更改爲mqm用戶名和用戶組

chown -R mqm:mqm 文件名

3.授予目錄文件讀寫執行權限

chod 777 文件名(/usr/users/mqm/var,大致是這個目錄,具體忘了在什麼下了,反正就是有mqm的默認安裝目錄,安裝完之後自動就有這個目錄)

這句是給mqm用戶授於執行權限,如果需要SSL安裝證書,這一步必須執行,如果不需要證書,可以跳過哦,不過最好還是執行吧,反正也不影響,萬一以後用的到是不是。

安裝好了ibmmq,下一步就是創建隊列管理器了,隊列以及通道了。在這介紹一下這兩個東西:

隊列管理器下創建隊列和通道:

隊列分爲三種,本地隊列QL,本地傳輸隊列QX,遠程隊列QR。

本地隊列:本地隊列是用於本地服務器接收消息的隊列。

本地傳輸隊列:和遠程隊列搭配遠程傳輸到其他網絡的服務器的。

遠程隊列:遠程和其他服務器發送消息的。

通道分爲三種,發送通道,接收通道,服務器連接通道。

發送和接收不用說,服務器接收通道是用於本地程和代碼連接的通道。名稱隨便起,不用於和遠程服務器配置。

準備條件:

1)  IBM MQ消息中間件軟件安裝完畢

 

2)  Mqm用戶及用戶組創建完畢

 

下面開始建立MQ通道及隊列

因爲我測試的服務器IP是97,我就用97來命名了

1、查看目前已創建的隊列:dspmq

2、創建隊列管理器:crtmqm -q QM97

3、開啓隊列管理器:strmqm QM97

4、  查看隊列管理器運行狀態:

dspmq:

5、  運行隊列管理器並創建相應的遠程隊列、傳輸隊列及通道

注意:在創建隊列和通道的時候先說一點:定義名字的或者綁定名字的時候不加‘’的時候是默認大寫的,加上‘’是區分大小寫的,這是一個坑。

1)  打開隊列管理器並定義遠程隊列:

runmqsc QM97

 

定義一個名叫QR97的遠程隊列

DEFINE QREMOTE('QR97') RNAME('QL98') RQMNAME('QM98') XMITQ('QX97') REPLACE

註釋:

QR97:本地服務器定義遠程隊列的名字;

QL98:綁定內網另一臺mq的本地隊列的名字;遠程連接的時候綁定遠程隊列的名字(QR的);

QM98:連接另一臺mq服務起的隊列管理名稱;

QX97:本地服務器的傳輸隊列;

2)  定義傳輸隊列:

DEF QL(QX97)  usage(xmitq) SHARE

定義本地隊列:

DEFINE QLOCAL(QL97) share

3)  定義發送通道

DEFINE CHANNEL(CH97TOCH98) CHLTYPE(SDR) TRPTYPE(TCP) CONNAME('22.8.159.98(11201)') XMITQ(QX97) REPLACE

CH97TOCH98:發送通道名稱;

22.8.159.98(11201):連接mq的IP和端口號;

定義接收通道:

DEFINE CHANNEL(CH98TOCH97) CHLTYPE(RCVR) TRPTYPE(TCP) REPLACE

CH98TOCH97:接收通道的名稱;

定義服務器連接通道

define channel('CHaa') chltype(SVRCONN) trptype(TCP) mcauser('mqm')

CHaa:服務裏連接通道名稱;

Mqm:綁定mq用戶;

定義並開啓接受隊列QM97監聽

DEFINE LISTENER(QM97LISTEN) TRPTYPE(TCP) CONTROL(QMGR) PORT(11201)

啓動監聽:

start LISTENER(QM97LISTEN)  順便說一下停止監聽:stop LISTENER(QM97LISTEN)

開啓接收通道

start chl(CH98TOCH97)

開啓發送通道:

start chl(CH97TOCH98)

注意:

在這講一波遠程連接和內網連接的區別:

內網連接,定義遠程隊列,遠程隊列綁定的是對方的本地隊列,也就是說,你通過你的遠程隊列向對方的本地隊列發纔可以,

外網連接,定義;遠程隊列,綁定的是對方的遠程隊列,即通過你的遠程隊列向對方的遠程隊列發纔可以。

接收消息的時候永遠是在本地隊列裏取。

7、  發送消息測試:

進入到/opt/mqm/samp/bin/ 目錄下,執行命令:./amqsput QR97 QM97

輸入內容,回車換行,輸入完之後按兩次回車結束輸入。

1) 寫入如下內容:

 

2)遠程(由於在本地模擬遠程)接收消息隊列信息,如下:

 

獲取消息成功,消息中間件可以避免因爲宕機或者網絡異常所導致的信息丟失問題。

使用mq隊列管理器配置信息,以下幾點一條都不能丟下:

 

1)  遠程隊列

2)  傳輸隊列

3)  傳輸通道

4)  遠程接收隊列(對方本地隊列)

5)  遠程傳輸通道

6)  遠程監聽配置及開啓

7)  本地通道開啓

四、連接客戶端

到此,通過linux命令的方式就配置就完了,如果後續要維護MQ最好還是得連接上客戶端比較方便,有了可視化界面,就可以很容易的操作了。連接客戶端也有很多問題,下面是我趟過的水,你就可以直接使用了,只需要執行4句命令:

如果要取消認證執行命令如下:

---MQ7.5需要修改參數---

(1)alter qmgr CHLAUTH(DISABLED)屬性改爲不可用

---MQ8.0需要修改參數---

(1)alter qmgr CONNAUTH('')

(2)refresh security type(CONNAUTH)

連接客戶端沒有權限的時候也需要執行這個!!!

//進入隊列管理器

>runmqsc QM97

//首先查看下認證記錄

(3)display qmgr chlauth

//將認證關閉

(4)alter qmgr chlauth(disabled)

查看發送通道狀態:

到此,就可以輸入配置連接客戶端了!

 

下面統計一些常用的操作命令:

crtmqm -q 名字  創建隊列管理器

strmqm 名稱  啓動隊列管理器

runmqsc 名字  運行隊列管理器

dspmq 查看隊列管理器狀態

endmqm 名稱 停止隊列管理器

endmqm -i 名稱 立即停止隊列管理器

endmqm -p 名稱 強制停止隊列管理器

dltmqm 名稱 刪除隊列管理器

define/def qlocal/ql (name) 創建本地隊列

define/def qlocal/ql(name) usage(xmitq) replace 創建本地傳輸隊列

define/def qremote(遠程隊列名稱) rname(對方接受隊列名稱) rqmname(對方隊列管理器名稱) xmitq(傳輸隊列名稱) replace 創建遠程隊列

通道:

DEFINE CHANNEL(CH97TOCH98) CHLTYPE(SDR) TRPTYPE(TCP) CONNAME('22.8.159.98(11200)') XMITQ(QXBOCI) REPLACE 定義通道

Define channel(name) chltype(sdr) trptype(tcp) conname(‘ip(port)’) xmitq(qxboci) replace

Delete chl(name) 刪除通道

Dis chs(name) 查看通道狀態

Start chl(name) 啓動通道

Stop chl(name) 關閉通道

Reset chl(name) 重置通道

隊列:

Dis ql(qname) all 顯示隊列所有屬性

Dis ql(qname) curdepth 顯示隊列當前深度,即當前隊列的消息數

Dis qs(qname) type(queue) all 顯示與隊列相關的狀態信息

Dis qs(qname) type(handle) all 顯示與訪問隊列的句柄相關的狀態信息

 

Delete ql(qname) 刪除隊列

Clear ql(name) 刪除隊列中的消息

 

 

 

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