MQ服務器端和客戶端通訊淺談

MQ服務器端和客戶端通訊淺談

1. WebSphere MQ的服務端的安裝和配置服務器

(1)建立名爲venus.queue.manager的默認隊列管理器。網絡

       在DOS窗口命令提示符下,輸入如下命令:tcp

        crtmqm -q venus.queue.manager工具

(2)啓動剛纔建立的隊列管理器。測試

       在DOS窗口命令提示符下,輸入如下命令:編碼

        strmqm venus.queue.manager日誌

(3)啓動MQSC命令。code

       在DOS窗口命令提示符下,輸入如下命令:對象

        runmqsc venus.queue.manager隊列

(4)新建名爲orange.queue的本地隊列。

       輸入如下命令:

        define qlocal (orange.queue)

        注意:MQSC中任何小寫字母將自動轉換成大寫,除非用單引號將它們括起來。這意味着若是使用名稱Orange.Queue建立了隊列,則記住在MQSC之外其餘命令中都必須使用Orange.Queue。

(5)中止MQSC。

       輸入如下命令:

        end

   如今,咱們已經定義瞭如下對象:

    (1)名爲venus.queue.manager的默認隊列管理器。

    (2)名爲ORANGE.QUEUE的隊列。

   測試對象:要測試隊列管理器和隊列,請使用樣本程序amqsput(將消息放入隊列)和amqsget(從隊列獲取消息),步驟以下:

    (1)啓動DOS窗口,進入到C:\Program Files\IBM\WebSphere MQ\bin目錄下。

    (2)將消息放入隊列。

        輸入如下命令:

        amqsput ORANGE.QUEUE

        顯示如下消息:

        Sample amqsput0 start

        Target queue is ORANGE.QUEUE

    (3)輸入一些字符數據,而後雙擊"Enter"鍵,則顯示如下消息:

        Sample amqsput0 end

        如今消息已經被放在隊列中了。

    (4)要從隊列中獲取消息,輸入如下命令:

        amqsget ORANGE.QUEUE

        在屏幕上將顯示您剛纔輸入的字符數據消息。暫停後,例子程序結束。

   若是以上步驟都能完成,則完成了本地安裝的驗證。

注意:若是在任何階段中斷整個安裝過程,則應該從頭開始從新運行安裝。

2. WebSphere MQ客戶端的安裝和配置

若是咱們開發的基於MQ的應用與MQ服務器不在同一臺機器上,那麼就必須在MQ應用端安裝MQ客戶端。下面咱們以在Suse Linux 10下安裝WebSphere MQ v6.0 Client爲例介紹MQ客戶端在Linux下的安裝和配置步驟。

(1)解壓縮MQ客戶端安裝包:C84CJML.WebSphere MQ V6.0 Linux x86 Client.tar.gz,命令以下:

        tar -xvfz C84CJML.WebSphere MQ V6.0 Linux x86 Client.tar.gz

(2)建立WebSphere MQ 必需的文件系統,命令以下:

        mkdir /opt/mqm # for product code

        mkdir /var/mqm # for working data

(3)創造MQ用戶和用戶組,命令以下:

        groupadd mqm

        useradd -d /var/mqm -g mqm -G mqm mqm

        passwd mqm # change password to "password"

(4)爲mqm用戶組添加root組

        cd /etc

        vi group

        修改 mqm:!:1000:mqm ? mqm:!:1000:mqm,root

(5)調整系統參數(視須要而定)

        修改最大共享內存,命令以下:

        cat /proc/sys/kernel/shmmax

        echo 268435456 >/proc/sys/kernel/shmmax

        修改最大文件句柄,命令以下:

        cat /proc/sys/fs/file-max

        echo 32768 >/proc/sys/fs/file-max

(6)轉到WebSphere MQ解壓後的目錄中,得到WebSphere MQ受權,命令以下:

        ./mqlicense.sh -text_only

        閱讀全文後,選擇1接受受權。

(7)安裝WebSphere MQ客戶端,命令以下:

        rpm -ivh MQSeriesRuntime-6.0.0-0.i386.rpm

        rpm -ivh MQSeriesSDK-6.0.0-0.i386.rpm

        rpm -ivh MQSeriesJava-6.0.0-0.i386.rpm

        rpm -ivh MQSeriesClient-6.0.0-0.i386.rpm

        rpm -ivh MQSeriesSamples-6.0.0-0.i386.rpm

(8)安裝校驗

        rpm -qa | grep MQSeries

        結果以下則代表MQ 客戶端的安裝已成功。

        MQSeriesRuntime-6.0.0-0

        MQSeriesSDK-6.0.0-0

        MQSeriesJava-6.0.0-0

        MQSeriesClient-6.0.0-0

        MQSeriesSamples-6.0.0-0

3. WebSphere MQ的服務端和客戶端的互聯

本節的WebSphere MQ的服務端和客戶端不在同一臺機器上。

本節以上述1,2兩個步驟安裝好的MQ服務端和MQ客戶端爲例,介紹如何配置MQ的服務端和客戶端使二者可以互聯。

(1)服務端配置

      1)點"開始"->"全部程序"->"IBM WebSphere MQ"->"WebSphere MQ 資源管理器",進入WebSphere MQ 資源管理器界面。以下圖所示:

      2)建立名爲"QM_JACK"的隊列管理器

        <1>選中"隊列管理器"->"新建"->"隊列管理器",以下圖所示:

        <2>在隊列管理中輸入"QM_JACK",其餘選項默認不變,點"下一步":

        <3>設置隊列日誌(本步驟採用系統默認設置),點"下一步":

        <4>啓動隊列管理器,建立服務器鏈接通道,容許在TCP/IP上進行隊列管理器的遠程管理,點擊"下一步":

        <5>設置隊列管理器QM_JACK的偵聽端口:8927(用戶能夠根據須要自行更改端口號),點擊"完成"。

        <6>系統進入等待界面:

        <7>隊列管理器QM_JACK建立成功

      3)在QM_JACK下建立名爲"QUEUE_RECV"和"QUEUE_REPLY"的本地隊列(客戶能夠根據本身的需求隨意更改本地隊列的名字和數量,這裏建立這兩個本地隊列只是爲以後的MQ_Tuxedo項目做準備):

        設置隊列名後其餘屬性全爲系統默認值,點擊"肯定"。

      4)在QM_JACK下建立名爲"CNN_JACK"的服務器通道。

        通道名稱設爲CNN_JACK,其餘選項保留爲系統默認設置,點擊"肯定"。

      5)在MQ服務器端的計算機用戶中添加MQ客戶端所在計算機的系統用戶。好比個人MQ客戶端被Suse Linux下的root用戶使用,那麼,咱們就須要在MQ的服務端(也就是Windows xp系統中添加名爲"root"的用戶)所在的計算機系統中添加名爲"root"的用戶。具體步驟以下:

        <1>點擊"開始"->"控制面板"->"計算機管理"->"系統工具"->"本地用戶和組"->"用戶",點右鍵,選"新用戶",以下圖所示:

        <2>建立新用戶:root(注意:這裏的用戶名"root"是MQ客戶端所在系統的用戶名,用戶要根據具體狀況進行修改)

           隨意設置一個有效密碼,選中密碼永不過時,點擊"建立"。

       <3>將新用戶加入mqm組(注意:這裏的mqm組是咱們安裝完MQ Server後系統自動建立的)

     

           啓動監聽器

           Runmqlsr –m QM_JACK"

           設置

           export MQCHLTAB= /PTAH/AMQCLCHL.TAB

     重啓機器。至此,MQ服務端的配置完成。

 

(2)客戶端配置

      按照咱們前面的步驟,MQ客戶端是安裝在Suse Linux 10 上,因此本節以Suse Linux 10下的MQ Client v6爲例說明如何配置MQ客戶端才能連上MQ服務器。

      1)設置MQSERVER環境變量,命令以下:

        export MQSERVER='CNN_JACK/tcp/9.186.110.133(8927)'

        參數說明:

        服務器鏈接通道名稱:CNN_JACK

        服務器鏈接通道協議類型:tcp

        服務器IP地址:9.186.110.133

        服務器鏈接通道所在的隊列管理器QM_JACK的偵聽端口:8927

     2)測試客戶端與服務端的網絡鏈接

        在客戶端使用ping命令檢查客戶端是否能連上服務端機器。

        一樣,在服務端使用ping命令檢查服務端是否能連上客戶端機器。

        測試完成後,進入下一步。

     3)進入/opt/mqm/samp/bin,使用樣本程序amqsputc(用來將消息發送到服務端隊列)和amqsgetc(用來從服務端隊列中讀取消息)來測試客戶端與服務端的MQ鏈接是否暢通,具體步驟以下:

       <1>輸入命令:

        ./amqsputc QUEUE_RECV QM_JACK

        則會顯示如下消息:

        Sample AMQSPUT0 start

        target queue is QUEUE_RECV

       <2>輸入一些字符,而後雙擊"Enter"鍵,則顯示以下信息:

        Sample AMQSPUT0 end

       <3>要從隊列獲取消息,則輸入以下命令:

        ./amqsgetc QUEUE_RECV QM_JACK

        則會在屏幕上打印出剛纔輸入的字符數據消息。暫停後,;例子程序結束。

若是以上步驟都可以完成,則完成了MQ服務端和客戶端的互聯配置。

注意:有時候,MQ客戶端聯服務端時會由於兩端字符集編碼CCSID不同形成鏈接的失敗,典型錯誤是:MQCONN ended with reason code 2059。在隊列管理器的錯誤日誌(位於/var/mqm/errors/AMQERROR**.log)中有以下信息:

        -------------------------------------------------------------------------------

08/23/2002 11:51:48

AMQ9541: CCSID supplied for data conversion not supported.

EXPLANATION:

The program ended because,

either the source CCSID '437' or the target CCSID '1381' is not valid,

or is not currently supported.

ACTION:

Correct the CCSID that is not valid, or ensure that the requested CCSID can be supported.

解決方法以下:在服務端用runmqsc qmname命令,輸入dis qmgr查看CCSID屬性值nnnn,在客戶端上配置環境變量: Windows 下:set MQCCSID=nnnn(在服務端看到的CCSID), Linux下:export MQCCSID=nnnn(在服務端看到的CCSID),從新啓動MQ 客戶端機器便可。

相關文章
相關標籤/搜索