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

MQ服务器端和客户端通信浅谈的更多相关文章

  1. 计算机网络:套接字(Socket)| Python socket实现服务器端与客户端通信,使用TCP socket阿里云ECS服务器与本机通信

    所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象.一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制.从所处的地位来讲,套接字上联应 ...

  2. Kubernetes容器之间的通信浅谈

    公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 作者: Matt Zand 和 Jim Sullivan 译者: 穿过生命散发芬芳F Kubernetes是一个容器化的解决 ...

  3. java socket编程 初级 服务器端和客户端 通信

    package server; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerS ...

  4. JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo

    OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...

  5. 浅谈通信网络(三)——TCP/IP协议

    简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.In ...

  6. QT实现TCP通信服务器端和客户端(支持多个客户端)精简版

    上星期接了个私活,工期两星期,报酬3000,写一个小软件,采集定向网络上的数据,并进行双向通信,捣鼓了两天,终于把QT中tcp通信这块调通了,找过N多例子,绝大部分都是基本的一个服务端一个客户端通信的 ...

  7. Android安全开发之浅谈密钥硬编码

    Android安全开发之浅谈密钥硬编码 作者:伊樵.呆狐@阿里聚安全 1 简介 在阿里聚安全的漏洞扫描器中和人工APP安全审计中,经常发现有开发者将密钥硬编码在Java代码.文件中,这样做会引起很大风 ...

  8. 浅谈HTTPS以及Fiddler抓取HTTPS协议

    最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同 ...

  9. [转]浅谈https\ssl\数字证书

    浅谈https\ssl\数字证书 http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html 全球可信的 ...

随机推荐

  1. InstallShield 2018 打包安装

    关于InstallShield 2018打包安装程序的使用 1. 下载InstallShield2018 建议使用新的版本,毕竟新的版本功能功能全.问题少.用户体验佳. 下载地址:http://www ...

  2. mysql中id值被重置的情况

    MySQL中,如果你为一张使用了innodb引擎的表指定了一auto_increment列,那么这张表会有一个auto_increment计数器,专门记录当前auto_increment的相关值,用来 ...

  3. EnjoyingSoft之Mule ESB开发教程第二篇:Mule ESB基本概念

    目录 1. 使用Anypoint Studio开发 2. Mule ESB Application Structure - Mule ESB应用程序结构 3. Mule ESB Application ...

  4. vue+element项目中使用el-dialog弹出Tree控件报错问题

    1. 按正常的点击按钮,显示dialog弹出的Tree控件,然后把该条数据下的已经选中的checkbox , 用setCheckedNodes或者setCheckedKeys方法选择上 , 报下面这个 ...

  5. nuxt项目打包上线,以及nuxt项目基础代码分享

    nuxt的项目部署到线上环境,有多种方法,这里分享我使用的方法,一步步照着配置,就可以配置成功~ (1)项目先执行npm run build 打包好   (2)服务器安装node 和pm2依赖 服务器 ...

  6. MsgWaitForMultipleObjects

    Use caution when calling the wait functions and code that directly or indirectly creates windows. If ...

  7. CentOS 7.3 配置静态ip

    镜像:CentOS-7-x86_64-DVD-1511.iso 1.修改.查看虚拟机的网段 1.1.查看虚拟机网段 编辑-> 虚拟机网络编辑器,修改的需要管理员权限 选择NAT模式 点击 NAT ...

  8. Excel催化剂图表系列之一整套IBCS图表大放送,一秒变图表专家

    不知不觉,从2019年1月初开始打算来一波图表系列的功能,首选IBCS标准化图表,结果入坑后,一路跌至谷底,和预想的完全不是一个量级的工作量,为了追求一键式.通用化及细节的严谨性,过程中好几次文件报错 ...

  9. Excel催化剂开源第28波-调用Google规划求解库

    在Excel催化剂的自定义函数中,有规划求解的函数,用于在一些凑数的场景,某财务工作网友向我提出的需求,例如用于凑发票额使用. 一般开发票的场景是多次采购合在一起开具,即多个订单产生后开,同时发票一般 ...

  10. JavaScript数组高性能去重解决方案

    在大多数的人眼里,数组去重是一个很简单的课题,很多人甚至熟练掌握了多种数组去重的方法,然而大多时候,我们却忽略了数组去重所消耗的时间资源.譬如我们在做前端性能优化的时候,又有多少人会考虑JavaScr ...