首先了解什么是mq?mq的作用是什么?
mq是通讯中间件。他的作用是省去开发人员开发通讯工具的时间,节省开发成本,提高开发效率。
mq的使用,如何安装mq?
根据以往的经验,win版的mq比较容易安装,傻瓜式,一路next就可以。
aix版本的用smitty安装。
linux版本用rpm -ivh 安装
mq中一些名称的概念:
队列管理器:简单的说就是一个大容器的管理员,这个大容器里放了很多东西。
队列:大容器里的东西,存放消息的盒子。
通道:大容器和大容器之间,程序和容器之间进行通讯的途径。
mq是如何实现通讯的?
mq的通讯方式有两种,通俗的说就是mq之间进行通讯,开发的程序和mq之间的通讯。
mq之间进行通讯:通过发送接收通道建立tcp连接进行消息传输,称为server对server
开发的程序和mq之间的通讯:通过服务器连接通道进行传输,client对server
如何配置两台mq使之相互进行通讯?
首先要规划好两个队列管理器之间使用的ip和端口,假设我们使用
ip 端口
192.168.0.1 1414
192.168.0.2 1415
第一步 建立队列管理器
crtmqm -lc -lf 100 -lp 3 -ls 3 QM1
解释下:
-lc 是采用循环日志
-lf 是每块日志的大小,4k为单位的,100就是100*4k
-lp 是主逻辑日志的数量
-ls 是辅逻辑日志的数量
QM1 是队列管理器名称
第二步 启动队列管理器
strmqm QM1
第三步 定义队列管理器中的队列和通道等
先运行runmqsc QM1首先要保证运行该命令的用户属于mqm组
运行完后进入mq命令窗口
定义本地队列 def ql(QL1)
先解释什么是本地队列,然后解释命令的含义(以下同)
本地队列是存储信息的盒子,用户可以从本地队列里取消息,对方发送消息的目的地也是本地队列。
def是 define的缩写,mq支持一些命令的缩写。
ql是queue local的缩写,表示本地队列,括号内是本地队列名
定义远程队列 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(system.channel.initq) trigdata(QM1.QM2)
传输队列是传输的介质,消息是通过传输队列进行传输的。
usage 用途xmitq是传输队列
trigger 消息触发开关
trigtype 触发类型第一条消息触发
initq 初始队列
trigdata 触发数据
定义发送通道 def chl(QM1.QM2) chltype(sdr) conname('192.168.0.2(1415)') trptype(tcp) xmitq(QT1)
发送通道就相当于建立一个tcp的连接
chl channel的缩写
chltype 通道类型sdr是发送通道
conname 连接名包括对方的ip和端口
trptype 通讯类型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 监听端口
control 监听控制,如果是qmgr则在队列管理器启动的时候监听也自动启动。
第五步 配置另外一个队列管理器
简单的说一下,和上面的差不多,只不过名字不一样。大家自己尝试下:)
写的手累了,下次补充!
继续
上面我们说完了如何建队列管理器,接下来我们说说建完以后如何测试两边是不是正常传输,
我们可以用命令行方式向远程队列中放入测试消息,以aix为例,
用/usr/mqm/samp/bin/amqsput命令就可以放入消息,格式为:
amqsput QR1 QM1
解释下:QR1是你要放入的队列名,QM1是你要放入的队列管理器名。
输入以上命令后就可以写入消息了,一下回车就是发送一条消息,两次回车就是退出。
用/usr/mqm/samp/bin/amqsget命令就可以取消息,格式为
amqsget QL2 QM2
解释下:QL1是你要取消息的队列名,QM2是你要取消息的队列管理器名。
输入完命令后就会显示所有消息。
不过要注意一点,命令行方式的输入和取消息有字节限制。
如果只是简单的浏览一下消息可以使用
/usr/mqm/samp/bin/amqsbcg命令
格式和取消息一样,但是该命令不会把消息取出来,运行完该命令后消息还是保存在队列中。
正常情况下消息的传输流程(只说正常的,排错一会再说)
QR1 -> QT1 -> QL2
消息被放入到远程队列中,远程队列通过传输队列传输,最后传输到QM2中的本地队列。
出现问题,我们怎么办?
1 不能放入消息。
一般这种情况应该大部分是远程队列中的传输队列那个参数配置的不正确。
还有可能是队列的允许放入这个参数设置成了禁止。基本上就这两种情况。
2 发送通道和接收通道的状态不是running
首先说明,如果长时间没有消息传输,通道的状态会变成不活动状态,这是正常现象。
如果你手动启动通道后,通道状态还不是running,那先查看错误日志(两边的队列管理器都要查看)
/var/mqm/qmgrs/QM1/errors中的错误日志,通常编号01的日志是最新日志。
常见情况是网络不通导致的通道不通!所以首先要保证网络是正常的,我们可以同过telnet对方的IP加监听端口的方法来查看是不是正常。
telnet 192.168.0.2 1415
再有的情况是两边的配置属性有问题,如两边发送和接收通道名不一致,发送通道的连接名配置错误,发送通道中的传输队列配置错误。
我们也可以执行mq中的一个命令来查看通道是不是正常
runmqsc QM1
ping chl(QM1.QM2)
ping操作来查看两边的通道是不是正常,如果正常会返回ping完成。
3 放入的消息没有到QM2的队列中
注意:消息一定要放入远程队列中,如果放入传输队列中消息会被放入死信队列中。(上面忘记定义死信队列了,晕)
再有看看远程队列中的属性是不是配置错误,如rname,rqname,xmitq等属性。
也有可能是发送接收队列的消息序列号不一致。如果不一致做一下reset操作。
还有可能是上一批消息没有提交。可以做一个resolve操作。
也是要先看错误日志
4 消息到达QM2队列QL2中,但是取不出来
QL2的允许取出属性是不是被禁止了。
这样再查看以下QM2到QM1的传输是不是正常。都正常就OK了。
分享到:
相关推荐
常用IBMMQ命令(个人工作经验总结)
总结来说,这个压缩包提供的内容涵盖了MQ2气体传感器的MATLAB仿真、硬件驱动程序以及通信协议的实现,对于理解MQ2的性能特性、开发相关应用以及构建基于STM32F103和Modbus RS485网络的监控系统具有重要的参考价值。...
MQ-3酒精传感器模块是一种...总结来说,这个压缩包提供的信息涵盖了MQ-3酒精传感器的硬件、软件和应用层面,无论是初学者还是有经验的开发者,都能从中获益,掌握如何有效地利用MQ-3模块进行气体检测和相关项目开发。
- **最佳实践**:分享行业内的成功案例和经验总结。 #### 四、结语 通过本指南的学习,读者将能够掌握MQ 6.0的基本原理、安装配置方法、日常管理和维护技巧等内容,为在实际工作中有效利用MQ 6.0这一强大消息中间件...
总结,WebSphere MQ以其成熟的技术和广泛的企业级应用经验占据市场主导地位,而TongLINK/Q凭借其本土化优势和创新特性,特别是在国内市场上展现了竞争力。选择哪款产品取决于具体业务需求、安全性要求以及系统管理的...
对于初学者来说,它是一份很好的入门资料,而对于经验丰富的系统管理员和开发者而言,则能够深入了解WebSphere MQ的高级特性和技术细节。通过学习本教程,读者不仅能够掌握如何安装、配置和管理WebSphere MQ,还能...
《WebSphere MQ应用编程参考》是一本详尽的指南,为开发者提供了在WebSphere MQ环境下的应用程序设计与实现所需的全面...总之,《WebSphere MQ应用编程参考》不仅是初学者的宝贵资源,也是有经验开发者的必备参考手册。
个人经验总结,学习笔记,周报,日报等。主要以文档格式为主,内容包含:面试资料,Java学习资料(算法,数据结构,设计模式,JVM调优,MQ,缓存(redis),微服务),英语学习资料等等。项目内部的readme.md文件有...
根据提供的信息,我们可以总结出以下关于“IBM WebSphere MQ Windows版快速入门”的关键知识点: ### 一、概述 - **标题**: IBM WebSphere MQ Windows版快速入门 - **描述**: 该文档为IBM WebSphere MQ在Windows...
无论是对于初学者还是有一定经验的开发者来说,掌握 WebSphere MQ 的基础知识都是非常重要的。通过本篇文章的学习,相信读者已经对 WebSphere MQ 有了较为全面的认识,并掌握了其基本的操作流程。
总结来说,这个资料包提供了全面的MQ-135空气质量检测传感器的理论知识和实践经验,无论是对传感器原理的理解,还是实际的项目开发,都能提供宝贵的指导。通过学习这些内容,我们可以掌握如何使用MQ-135传感器检测...
在SUSE Linux Enterprise 10 下安装IBM MQ ...在网上也查看了一些经验,再加上个人的实践,小总结如下:MQ的安装包是ISO,所以需要将ISO文件mount到Linux Enterprise 10 的一个目录下面,具体操作如下:
#### 四、总结 《WebSphere MQ 使用 Java (V5.3)》第三版为开发者提供了全面深入的指导,涵盖了 WebSphere MQ Java 的各个方面,包括基础知识、API 使用方法、安装配置以及最佳实践等内容。通过学习本书,开发者...
无论是对于新手还是有经验的开发者来说,深入了解其核心概念和使用技巧都是非常重要的。通过本指南的学习,希望能够帮助读者快速掌握WMQ V7.0.1的关键知识点,并能够在实际项目中有效地运用这些知识。
本书主要针对有经验的WebSphere MQ用户,旨在帮助他们了解并运用WebSphere MQ的发布/订阅(Publish/Subscribe)功能。通过深入探讨该模式的工作原理以及如何设计基于此模式的系统,读者将能够更好地在实际场景中应用这...
总结来说,这个压缩包文件提供了全面了解和使用MQ-9一氧化碳传感器的必要资源,无论是初学者还是经验丰富的开发者,都能从中获益。通过学习这些资料,你可以搭建一个能够实时监控一氧化碳浓度的系统,保障家庭或工作...
#### 四、总结 本书《WebSphere MQ 使用 Java》为希望使用 Java 进行 WebSphere MQ 编程的开发者提供了一份全面的指南。它不仅覆盖了基本的 Java 类使用方法,还深入介绍了 JMS 类的高级应用。此外,书中还包括了...
总结一下,MQ-7一氧化碳传感器模块是监测环境中一氧化碳浓度的实用工具,适用于家庭、车库、实验室等各种场合。提供的资源包括原理图、教程、源代码和额外的技术资料,这些资料为用户提供了全面的指导,帮助他们成功...
4. **Java 开发经验**:虽然不是必需的,但了解 Java 开发将有助于理解 WebSphere MQ 的 Java API。 ### WebSphere MQ 主要特性 1. **有保证的消息交付**:确保消息不会丢失或重复,提供高度可靠的数据传输。 2. *...