两个MQ队列管理器.docx

上传人:牧羊曲112 文档编号:4934024 上传时间:2023-05-24 格式:DOCX 页数:16 大小:117.76KB
返回 下载 相关 举报
两个MQ队列管理器.docx_第1页
第1页 / 共16页
两个MQ队列管理器.docx_第2页
第2页 / 共16页
两个MQ队列管理器.docx_第3页
第3页 / 共16页
两个MQ队列管理器.docx_第4页
第4页 / 共16页
两个MQ队列管理器.docx_第5页
第5页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《两个MQ队列管理器.docx》由会员分享,可在线阅读,更多相关《两个MQ队列管理器.docx(16页珍藏版)》请在三一办公上搜索。

1、I锻造摄练IT服务 助推用户事业发展Perfecting IT service and favoring chents success本地和远程队列的单个队列管理器实现过程-6月份技能提升内容1、基础环境硬件环境2台LIUNX服务器操作系统版本AS4IP地址192.168.1.240192.168.1.242队列管理器QM_LINUX240QM_LINUX242HOSTNAMEproduct240product2422、安装MQ在第一章中我们已经学会了如何安装MQ 了,在这里就不在详细阐述具体步 骤了,我们需要是把两台服务器都安装MQ。安装WebSphere MQ前,必须执行./mqlicen

2、se.sh,以阅读和接受许可证。安装所需的MQ包及WebSphere MQ Java和IBM Java SDK包,以便为 WebSphere MQ 开发 Java 客户机:mqmproduct240 install # rpm -ivh IBMJava2-SDK-1.4.2-0.0.i386.rpmmqmproduct240 install # rpm -ivhMQSeriesRuntime-6.0.0-0.i386.rpmmqmproduct240 install # rpm -ivh MQSeriesServer-6.0.0-0.i386.rpmmqmproduct240 install

3、# rpm -ivh MQSeriesJava-6.0.0-0.i386.rpmWebSphere MQ现在已经完成安装,并有用于进行配置的名为mqm的用户和 组。缺省情况下,WebSphere MQ安装在/opt/mqm中,队列和其他配置信息位 于用户mqm的主目录中。Java SDK安装在/opt/IBMJava2-142中,Java解释 程序位于 /opt/IBMJava2-142/bin 中。3、MQ TCP连接配置命令在配置之前有必要先了解一下WebSphere MQ术语和定义1) WebSphere MQ术语和定义队列管理器-提供队列服务和API及用于管理队列的管理功能的系统管 理

4、程序。队列-消息所发送到的命名目的地。本地队列-位于队列管理器本地的队列。远程队列-驻留在其他队列管理器(可能位于其他主机上)的队列。传输队列-以远程队列为目标的临时消息队列。通道-队列管理器之间的通信路径。侦听器-从客户机或其他队列管理器接受网络请求。命令服务器-验证命令并将有效命令发送到命令处理器(后者随后执行命 令)。2) MQ TCP连接配置命令在product240机器上执行如下操作创建队列管理器mqmproduct240 # crtmqm QM_LINUX240启动队列管理器mqmproduct240 # strmqm QM_LINUX240 使用MQ控制台命令RUNMQSC配置r

5、unmqsc QM_LINUX240创建死信队列:DEFINE QL(RE240.DEADQ) DEFPSIST(YES)更改队列管理器属性,设置死信队列为NT.DEADQALTER QMGR DEADQ(RE240.DEADQ)创建本地传输队列RE242:DEFINE QLOCAL(RE242)+USAGE(XMITQ) +DEFPSIST(YES) 创建远程队列TO.RE242 ,对应于RE242上的本地队列FROM.RE240, 传输队列为RE242:DEFINE QREMOTE(TO.RE242) +RNAME(FROM.RE240) +RQMNAME(QM_LINUX242) +XM

6、ITQ(RE242) 创建发送通道RE240.TO.RE242,使用TCPIP协议,远程主机地址为 192.168.1.242 port 为 1414,传输队列为 RE242:DEFINE CHANNEL(RE240.TO.RE242) +CHLTYPE(SDR) +CONNAME(192.168.1.242(1414) +XMITQ(RE242)创建本地监听DEFINE LISTENER(LN240) +TRPTYPE(TCP) +PORT(1414) +IPADDR(192.168.1.240) +CONTROL(QMGR)在product242机器上执行如下操作创建队列管理器启动队列管理

7、器mqmproduct242 # strmqm QM_LINUX242 使用MQ控制台命令RUNMQSC配置runmqsc QM_LINUX242创建死信队列:DEFINE QL(RE242.DEADQ) DEFPSIST(YES)更改队列管理器属性,设置死信队列为NT.DEADQALTER QMGR DEADQ(RE242.DEADQ) 创建本地队列FROM.RE240:DEFINE QLOCAL(FROM.RE240) DEFPSIST(YES)创建接收通道RE240.TO.RE242,使用TCPIP协议,传输队列为 RE240:DEFINE CHANNEL(RE240.TO.RE242)

8、 CHLTYPE(RCVR)创建本地监听DEFINE LISTENER(LN242) +TRPTYPE(TCP) +PORT(1414) +IPADDR(192.168.1.242) +CONTROL(QMGR)3)分别启动两节点监听Perfecting IT service and favoring chents success China Etek Servicerunmqlsr -1 TCP -p 1414 -m QM_LINUX240&runmqlsr -1 TCP -p 1414 -m QM_LINUX242 &4) 启动通道runmqchl -m QM_LINUX240 -c RE

9、240.TO.RE242&或者到MQ控制台里面执行如下命令启动Runmqsc QM_LINUX240start CHANNEL(RE240.TO.RE242)5) MQ TCP连接验证RE240向RE242发送消息,RE240端 运行:$ cd /opt/mqm/samp/bin./amqsput TO.RE242 QM_LINUX240q0l)roduct 240 bin $ . /aqsput TO. RE242 QI_LlHUX240 Saiple AIQSPUTO start target queue is TO.RE242 this is test cherry, yang 2232

10、198211093621Saiple AIQSPUTO end MqMproduct240 bin$在提示下输入字符,每条消息以回车键作结束。若不输任何字符,击回车键时将 退出该程序。RE242端在/usr/lpp/mqm/samp/bin下,运行:$ cd /opt/mqm/samp/bin./amqsget FROM.RE240 QM_LINUX242qdproduct242 bin$ . /aqsget FROM. RE240 QI_LlHUX242 Saple AIQSGETO start Message Message Message no More Messages Saple A

11、IQSGETO end duct242STATUS (Running)STATUS (Running)I锻造摄练IT服务 助推用户事业发展Perfecting IT service and favoring events success两个MQ队列管理器之间互相放消息的实现基于第三章实现的过程,现在我们来实现两个MQ队列管理器之间互相放消息。MQ TCP连接配置命令在product242机器上执行如下操作创建队列管理器mqmproduct242 # crtmqm WMQM242启动队列管理器mqmproduct242 # strmqm WMQM242查看队列管理器qdproduct 242$

12、dspqQ1NAIE(QI_LIHUX242)QINAIE (HQI242) 使用MQ控制台命令RUNMQSC配置runmqsc WMQM242创建死信队列:DEFINE QL(WMQM240.DEADQ) DEFPSIST(YES)更改队列管理器属性,设置死信队列为NT.DEADQALTER QMGR DEADQ(WMQM240.DEADQ) 创建本地传输队列WMQM240:DEFINE QLOCAL(WMQM240) +USAGE(XMITQ) +DEFPSIST(YES) 创建远程队列TO. WMQM240 ,对应于WMQM240上的本地队列FROM. WMQM242,传输队列为 WMQ

13、M240:DEFINE QREMOTE(TO.WMQM240) +RNAME(FROM.WMQM242) +RQMNAME(WMQM240) + 队列管理器的名字XMITQ(WMQM240) 创建发送通道WMQM242.TO.WMQM240,使用TCPIP协议,远程主机地址 为 192.168.1.240 port 为 1415,传输队列为 WMQM240:DEFINE CHANNEL(WMQM242.TO.WMQM240) +CHLTYPE(SDR) +CONNAME(192.168.1.240(1415) +XMITQ(WMQM240)创建本地监听DEFINE LISTENER(LN242

14、) +TRPTYPE(TCP) +PORT(1415) +IPADDR(192.168.1.242) +CONTROL(QMGR)说明:上面的监听其实可以不用创建了,因为在第三章的时候已经创建完成了在product240机器上执行如下操作创建队列管理器I锻造摄练IT服务 助推用户事业发展Perfecting IT service and favoring clients successmqmproduct240 # crtmqm WMQM240启动队列管理器mqmproduct240 # strmqm WMQM240查看队列管理器状态oduct 240$ dspq9INAIE(QI_LINUZ

15、240)9INA1E(V1QI240)STATUS (Rurming)STATUS (Running) 使用MQ控制台命令RUNMQSC配置runmqsc WMQM240创建死信队列:DEFINE QL(WMQM240.DEADQ) DEFPSIST(YES)更改队列管理器属性,设置死信队列为WMQM240.DEADQALTER QMGR DEADQ(WMQM240.DEADQ) 创建本地队列FROM.WMQM242:DEFINE QLOCAL(FROM.WMQM242) DEFPSIST(YES) 创建接收通道WMQM242.TO.WMQM240,使用TCPIP协议,传输队列为 WMQM24

16、2:DEFINE CHANNEL(WMQM242.TO.WMQM240) CHLTYPE(RCVR)创建本地监听DEFINE LISTENER(LN240) +TRPTYPE(TCP) +PORT(1415) +IPADDR(192.168.1.240) +CONTROL(QMGR)3) 分别启动两节点监听runmqlsr -t TCP -p 1415 -m WMQM240&runmqlsr -t TCP -p 1415 -m WMQM242 &4) 在发送端启动通道runmqchl -m WMQM242 -c WMQM242.TO.WMQM240 &或者到MQ控制台里面执行如下命令启动Run

17、mqsc WMQM242start CHANNEL(WMQM242.TO.WMQM240)CHLTYPE(SDR)CURRENTSTATUS (RUNNING) XIITQ (HQ1240)21 : dis chs (HQI242. TO. HQI240) AIQ8417: Display Channel St atus det ails CHOBEL (HQI242. TO. HQI240) C0NNAIE(192.168.1.240(1415) RQINAIE(nQ1240) SUBSTATE(1QGET)在接收端查看6 : dis chs (HQI242. TO. HQ1240) AMQ

18、8417: Display Channel Status details.CHANNEL (HQI242. TO. HQ1240)CHLTYPE (RCVR)C0NHAIE(192. 168. 1. 242)CUREENTRQINAIE (HQ1242)STATUS (RUNHING)SUBSTATE (RECEIVE)X1ITQ()5) MQ TCP连接验证WMQM242向WMQM240发送消息,WMQM242端运行:$ cd /opt/mqm/samp/bin./amqsput TO. WMQM240 WMQM242China Etek ServicePerfecting IT servi

19、ce and favoring clients successq伽mduct 242 bin $ . /aqsput TO. HQ1240 HQ1242 Saple AIQSPUTO starttarget queue is TO. TBQ1240this is a testy nae is cherry.yangobile:15101079285shengf enzhenghao:220323198211093621http:/. ce-service. Saple AIQSPITTO endqM0product242 bin$在提示下输入字符,每条消息以回车键作结束。若不输任何字符,击回车

20、键时将 退出该程序。WMQM240 端在/usr/lpp/mqm/samp/bin 下,运行: $ cd /opt/mqm/samp/bin./amqsget FROM.WMQM242 WMQM240qproduct 240 bin $ ./aqsget FRO1. HQ1242 HQ1240 Sample AIQSGETO start Message Message y naie is cherry.yang Message lobile: 15101079280 Message Message 6)总结:至此实现了两个MQ队列管理器之前相互放消息的目的。不过在搭建该实验 也出现了一些问题概

21、况如下:1. 监听端口:不能重复。当实现IP242到IP240发生消息时候由于我当时设置的和1414 一样导致发 送的消息到了第个队列管理器。2. 正确配置传输队列的名字。创建发送通道WMQM242.TO.WMQM240,使用TCPIP协议,远程主机地址为 192.168.1.240 port为1415,传输队列为WMQM240,但是我在创建的时候写成 了 WMQM242结果在监听正常、通道都正常的情况下导致发送消息报错如下图:I锻造摄练IT服务助推用户事业发展Perfecting IT service and favoring events successoduct 242 bin $ .

22、/aqsput TO. HQI240 HQI242Saple ABQSPUT0 starttarget queue is TO. HQI240IQOPEN ended vith reason code 2087unable to open queue for out putSample AIQSPUTO end3. qr queue remote 的缩写rname指定的远程队列管理器上的队列名rqname远程队列管理器xmitq所要用的传输队列由于定义错了远程队列管理器的名字,把其指定为了传输队列的名字,导致了 发送的消息到了死信队列里面,查看死信队列。mqmproduct242 bin$ .

23、/amqsbcg RE242.DEADQ QM_LINUX2424. 对于关键一些术语要理解才不至于理解不清楚导致失败,仔细分析了总 结了一下:首先了解什么是mq? mq的作用是什么?mq是通讯中间件。他的作用是省去开发人员开发通讯工具的时间,节省开发成 本,提高开发效率。mq的使用,如何安装mq?根据以往的经验,win版的mq比较容易安装,傻瓜式,一路next就可以。aix版本的用smitty安装。linux版本用rpm -ivh安装mq中一些名称的概念:队列管理器:简单的说就是一个大容器的管理员,这个大容器里放了很多东西。队列:大容器里的东西,存放消息的盒子。通道:大容器和大容器之间,程序

24、和容器之间进行通讯的途径。mq是如何实现通讯的?mq的通讯方式有两种,通俗的说就是mq之间进行通讯,开发的程序和mq之间 的通讯。mq之间进行通讯:通过发送接收通道建立tcp连接进行消息传输,称为server对 server开发的程序和mq之间的通讯:通过服务器连接通道进行传输,client对server如何配置两台mq使之相互进行通讯?首先要规划好两个队列管理器之间使用的ip和端口,假设我们使用ip端口192.168.1.240 1414192.168.1.242 1415第一步建立队列管理器crtmqm -lc -lf 100 -lp 3 -ls 3 QM1解释下:-lc是采用循环日志-l

25、f是每块日志的大小,4k为单位的,100就是100*4k-lp是主逻辑日志的数量-ls是辅逻辑日志的数量QM1是队列管理器名称第二步启动队列管理器strmqm QM1第三步定义队列管理器中的队列和通道等先运行runmqsc QM1首先要保证运行该命令的用户属于mqm组运行完后进入mq命令窗口定义本地队列def ql(QL1)先解释什么是本地队列,然后解释命令的含义(以下同)本地队列是存储信息的盒子,用户可以从本地队列里取消息,对方发送消息的目 的地也是本地队列。def是define的缩写,mq支持一些命令的缩写。ql是queue local的缩写,表示本地队列,括号内是本地队列名定义远程队列

26、def qr(QR1) rname(QL2) rqname(QM2) xmitq(QT1)远程队列是相对于本地队列的,当用户希望往另一个队列管理器发消息的时候, 配置好远程队列,用户直接放消息到该队列就可以,mq会传输到另一方的本地 队列中。以上面的例子说明,当我们把消息放入该远程队列后,消息会传输到QM2队列管 理器中的QL2队列中。qr queue remote 的缩写rname指定的远程队列管理器上的队列名rqname远程队列管理器xmitq所要用的传输队列定义传输队列 def ql(QT1) usage(xmitq) trigger trigtype(first) initq (sys

27、tem.channel.initq) trigdata(QM1.QM2)传输队列是传输的介质,消息是通过传输队列进行传输的。usage用途xmitq是传输队列trigger消息触发开关trigtype触发类型第一条消息触发initq 初始队列trigdata触发数据定义发送通道 def chl(QM1.QM2) chltype(sdr) conname(192.168.1.240(1415) trptype (tcp) xmitq(QT1)发送通道就相当于建立一个tcp的连接chl channel 的缩写chltype通道类型sdr是发送通道conname连接名包括对方的ip和端口trptyp

28、e通讯类型tcp通讯 xmitq使用的传输队列定义接受通道def chl(QM2.QM1)接收通道是被动的,只定义名字就可以。大家注意,接收通道的名字一定要和发 送通道名一致,他们是靠名字来匹配。第四步配置监听器是对方mq管理器来探测,本地要给对方一个回应,监听器就是起这个作用的。如果是5.3版本只能在命令行里运行runmqlsr -m QM1 -t tcp -p 1414如果是 6.0 版本 可以 runmqsc QM1 里运行 def listener(LSR.QM1) trptype(tcp)port(1414) control(qmgr)解释下trptype监听类型port监听端口co

29、ntrol监听控制,如果是qmgr则在队列管理器启动的时候监听也自动启动。第五步 配置另外一个队列管理器简单的说一下,和上面的差不多,只不过名字不一样。第六步测试两边传输我们可以用命令行方式向远程队列中放入测试消息,以aix为例,用/usr/mqm/samp/bin/amqsput命令就可以放入消息,格式为:amqsput QR1 QM1解释下:QR1是你要放入的队列名,QM1是你要放入的队列管理器名。输入以上命令后就可以写入消息了,一下回车就是发送一条消息,两次回车就是 退出。用/usr/mqm/samp/bin/amqsget命令就可以取消息,格式为 amqsget QL2 QM2解释下:

30、QL1是你要取消息的队列名,QM2是你要取消息的队列管理器名。输入完命令后就会显示所有消息。不过要注意一点,命令行方式的输入和取消息有字节限制。如果只是简单的浏览一下消息可以使用/usr/mqm/samp/bin/amqsbcg 命令格式和取消息一样,但是该命令不会把消息取出来,运行完该命令后消息还是保 存在队列中。正常情况下消息的传输流程(只说正常的)QR1 - QT1 - QL2消息被放入到远程队列中,远程队列通过传输队列传输,最后传输到QM2中的本 地队列。还是不能不能放消息怎么办?(1)不能放入消息。一般这种情况应该大部分是远程队列中的传输队列那个参数配置的不正确。还有可能是队列的允许

31、放入这个参数设置成了禁止。基本上就这两种情况。(2)发送通道和接收通道的状态不是running首先说明,如果长时间没有消息传输,通道的状态会变成不活动状态,这是正常 现象。如果你手动启动通道后,通道状态还不是running,那先查看错误日志(两边的 队列管理器都要查看)/var/mqm/qmgrs/QM1/errors中的错误日志,通常编号01的日志是最新日志。常见情况是网络不通导致的通道不通!所以首先要保证网络是正常的,我们可以 同过telnet对方的IP加监听端口的方法来查看是不是正常。telnet 192.168.1.240 1415再有的情况是两边的配置属性有问题,如两边发送和接收通道

32、名不一致,发送通 道的连接名配置错误,发送通道中的传输队列配置错误。我们也可以执行mq中的一个命令来查看通道是不是正常runmqsc QM1ping chl(QM1.QM2)ping操作来查看两边的通道是不是正常,如果正常会返回ping完成。(3)放入的消息没有到QM2的队列中注意:消息一定要放入远程队列中,如果放入传输队列中消息会被放入死信队列中。(上面 忘记定义死信队列了,晕)再有看看远程队列中的属性是不是配置错误,如rname,rqname,xmitq等属性。也有可能是发送接收队列的消息序列号不一致。如果不一致做一下reset操作。还有可能是上一批消息没有提交。可以做一个resolve操作。也是要先看错误日志(4)消息到达QM2队列QL2中,但是取不出来QL2的允许取出属性是不是被禁止了。这样再查看以下QM2到QM1的传输是不是正常。都正常就OK 了。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号