IBM MQ share
1.什么是MQ
MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据结构。一般用来解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。主要产品:RabbitMQ、ActiveMQ、RocketMQ、ZeroMQ、Kafka、IBM MQ
2.IBM MQ简介
队列(queue):我们可以简单地把队列看成一个容器,用于存放消息。
队列管理器(Qmanager):队列管理器构建了独立的 MQ 的运行环境,它是消息队列的管理者,用来维护和管理消息队列。
消息:MQ中的最小对象;默认情况下,消息缺省可以达到 4MB。消息可以分成持久消息和非持久消息。所 谓“持久”的 意思,就是在MQ 队列管理器重启动后,消息是否仍然能保持。持久的消息写入或读出队列的同时会在 Log 中记录,所以性能上比非持久消息差不少。
通道(channel):通道则是两个队列管理器之间的一种单向的点对点的通信连接, 消息在通道中只能单向流动。队列管理器之间的通信是通过配置通道来实现 的,通道两侧的队列管理器对这个通道的相关参数应该能对应起来。在通道上可以配置不同的通信协议,这样就使得编程接口与通信协议无关。通道两端的 配置必须匹配, 且名字相同,否则无法连通。
RUNMQSC:命令行交互界面管理工具;作为维护人员的我们,与MQ打交道有两种方式,一种是通过MQ提供的二进制命令工具(在mq安装目录的bin目录下),另一种方式则是通过命令行交互管理工具;这二者在功能上有很多是重合的,但并非完全可替代;RUNMQSC是一个通用的 MQ 对象管理工具,使用MQSC命令集可以对 MQ 对象进行;全方位的管理,也是各种管理方式最直接、最全面的一种。RUNMQSC 运行的命令集称MQSC (MQ Script Command)";在 RUNMQSC 中大小写无关,所有的命令会先转换成全大写再提交执行。所以如果要 表示大小相关的字串,比如对象名,则用引号将字串包住。输入以下命令启动MQSC命令:runmqsc[queueManagerName]
3.MQ 常用命令
查看队列的属性
runmqsc QM
dis queue(qname) all
显示所有队列
display queue(*)
清理队列内容
clear ql(qname)
查看当前所有连接
display conn(*) where(objname eq qname) all
关闭connection
stop conn(conn NO)
查看MQ版本
dspmqver
查看队列深度
display queue() curdepth
清除队列消息
clear ql(Q_SVC2ADP_4_HTTP)
查看远程连接
display qremote (*)
4. 查看队列管理器运行状态
# dspmq
显示结果中QMNAME表示MQ队列管理器的名称,STATUS表示当前运行状态。
运行状态有如下几种:
Starting 正在启动
Running 正在运行
Ending 正在停止
Ended normally 已经正常终止
Ended immediately 已经立即终止
Ended preemtively 已经强制终止
Ended unexpectively 异常终止
注:停止MQ后建议使用dspmq命令进行状态检查是否成功关闭。
5. 查看通道运行状态与启停通道
$ runmqsc QmgrName
dis chl(*); 查看所有通道定义
dis chs(*); 查看所有通道状态,如果没有查询到通道状态,或报错AMQ8420: Channel Status not found,请启动通道
dis chs(ChannelName); 查看通道ChannelName的状态
通道状态有如下几种:
STARTING 正在启动
BINDING 正在绑定
INITIALIZING 正在初始化
RUNNING 正常
STOPPING 正在停止
RETRYING 重试
PAUSED 等待
STOPPED 已停止
REQUESTING 请求
启停通道与重置通道序号的方法:
$ runmqsc QmgrName
start chl(ChannelName); 启动通道
stop chl(ChannelName); 停止通道
6. 查看队列深度
如果队列深度不断增加,不见减少,那么可能就有问题了,请检查并分析其原因。
$runmqsc QmgrName
dis q(*); 查看所有各类队列的属性
dis qlocal(QName); 查看所有本地队列的属
队列深度属性为:CURDEPTH
7.日志路径
1.整个MQ的错误日志
/../mqm下面的errors
2.单个QM下面的日志
/var/mqm/qmgrs/AMQ01OD1/errors