zoukankan      html  css  js  c++  java
  • MQ服务器端和客户端通信浅谈

    MQ服务器端和客户端通信浅谈

    1. WebSphere MQ的服务端的安装和配置

    (1)创建名为venus.queue.manager的默认队列管理器。

           在DOS窗口命令提示符下,输入以下命令:

            crtmqm -q venus.queue.manager

    (2)启动刚才创建的队列管理器。

           在DOS窗口命令提示符下,输入以下命令:

            strmqm venus.queue.manager

    (3)启动MQSC命令。

           在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 FilesIBMWebSphere MQin目录下。

        (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 客户端机器即可。

  • 相关阅读:
    【Git教程】Git教程之分支管理
    【Git教程】Git教程及使用命令
    【深入理解Java虚拟机】自动内存管理机制——垃圾回收机制
    HDU-5902-GCD is Funny解题笔记
    数据结构——二叉树的遍历
    数据结构——树
    Css--input输入框点击时去掉外框outline:medium;(chrome)
    JSON中eval与parse的区别
    【转载】实时监听输入框值变化的完美方案:oninput & onpropertychange
    使用寄存器点亮LED(第2节)—寄存器映射代码讲解
  • 原文地址:https://www.cnblogs.com/tbyang/p/3457397.html
Copyright © 2011-2022 走看看