-
1.
查看所有队列管理器
dspmq
查看所有的通道
dis
chl(name)/dis chl(*)/dis chl(*) all/dis
channel(name)
查看通道状态
dis chs(name)/dis chs(*)/dis chs(*) all
查看队列
display queue(name)
查看队列管理器信息(包括
CCSID
等信息)
dis qmgr
启动队列管理器
runmqsc
队列管理器——
name
2.
重置通道序号
reset
chl(
通道
name) seqnum(1)
3.
一段时间没有消息,通道会变为不活动状态,有消息时通道会变为
running
状态
4.
查看队列里面是否有消息
dis
ql('
队列名称
') curdepth
< br>5.
日志目录:
MQ
安装目录<
/p>
/qmgrs/
队列管理器名
/erro
rs/
6.
修改
ccsid
alter qmgr ccsid(
“
XXX
”
)
一、
< br>MQ
的启动与停止
用
root
用户启
/
停需
要
root
用户包含在
mqm
组中。
1
、
MQ
的启动
strmqm QMgrName
如果启动默认队列管理器,
strmqm
后可
以忽略队列管理器名称。
在意外情况停止队列管理器后,启动
可能会失败,此时可以检查上次停止后是否有
IPC
资
源未释放,若有请予以删除,删除方法参考下面的
“
C.
清理所有残留在系统内部的信号灯和
共享内存
”
。
2
、
MQ<
/p>
的关闭
一般情况下,我们使用
“
endmqm
-i QMgrName
”
来停止
mq
,如果停止失败,可以使用如
下步骤:
步骤
1<
/p>
:
endmqm
-p QMgrName
,如果停不掉,继续步骤
2
;
步骤
2
:杀死有关进程,清理残留在系统内部的信号灯和共享内存
< br>
A.
找到队列管理器程序进程
ps -ef|grep QMgrName
B.
使用
kill
命令终止<
/p>
1>
中找到的程序进程,无法停止的进程可以用
< br>kill -9
来终止,终止进程
的顺序如下
(
不存在的进程可以忽略)
:
kill amqpcsea
命令服务器
kill
amqhasmx
记录器
kill amqharmx
日志
格式化器(仅
LINEAR
日志)
kill amqzllp0
检查点处理器
kill
amqzlaa0
队列管理器代理
kill amqzxma0
处理控制器
kill
amqrrmfa
库进程(用于群集)
C.
清理所有残留在系统内部的信号灯和共享内存(其属主和组均为
mqm
p>
)
ipcs -s| grep mqm
| awk '{print $$2}'|xargs -i ipcrm -s {}
ipcs -m| grep mqm | awk '{print
$$2}'|xargs -i ipcrm -m {}
二、
MQ
运
行状态查看与常用操作
1
、查看队列管理器运行状态
对
MQ 5.2
或以上版本,执行如下
命令检查队列管理器运行状态:
dspmq
< br>显示结果中
QMNAME
表示
M
Q
队列管理器的名称,
STATUS
表
示当前运行状态。
运行状态有如下几种:
Starting
正在启动
Running
正在运行
Ending
正在停止
Ended normally
已经正常终止
Ended
immediately
已经立即终止
Ended
preemtively
已经强制终止
Ended
unexpectively
异常终止
注意:停止
MQ
后必须使用
dsp
mq
命令进行状态检查
dspmq
查询结果示例:
QMNAME(QM00)
STATUS
(
Running
)
2
、查看通道运行状态与启停通道
runmqsc
dis
chl(*);
查看所有通道定义
dis chs(*);
查看所有通道状态,
如果没有查询到通道状态,
或报错
AMQ8420:
Channel
Status not
found
,请启动通道
dis c
hs(ChannelName)
;查看通道
ChannelN
ame
的状态
通道状态有如下几种:
STARTING
正在启动
BINDING
正在绑定
INITIALIZING
正在初始化
RUNNING
正常
STOPPING
正在停止
RETRYING
重试
PAUSED
等待
STOPPED
已停止
REQUESTING
请求
start chl(ChannelName);
启动通道
stop
chl(ChannelName);
停止通道
reset
channel(ChannelName);
重置通道序
号。当本地与其他
MQ
队列管理器的通道无法
< br>正常启动的情况,
检查日志发现是通道序号不一致,
此时
就需要
先停止发送方通道
,
并在
发
送方和接收方进行通道计数的重置,
重置后
启动通道即可恢复通讯。
3
、查看通道监听状态与启停监听
runmqsc
dis
listner(*);
查看通道监听定义
dis lsstatu(listnerName);
查看监听状态
start
lstr(listnerName)
;启动监听
stop
lstr(listnerName)
;停止监听
4
、查看队列深度
runmqsc
dis q(*);
查看所有各类队列的属性
Dis
q(*) all
同上
dis qlocal(QName);
查看所有本地队列的属性
队列深度属性为:
CURDEPTH
5
、查看死信队列
dis qlocal(DEADQName)
三、日常维护项目
1
、监控文件系统
/var/mqm
的使用情况,建议不
要超过
80%
。
2
、定期
报告
MQ
系统错误,备份清理
MQ
p>
系统错误记录
在遇到问题时,
检查
/var/mqm/errors
目录下是否
有新的
FDC
文件产生,
如果有应当检
查原
因。另外,要定期检查该目录下
MQ
错误日志。
3
、检查日志个数是否增长
使用命令
cd
移动到
M
Q
日志所在目录(
/var/mqm/log/QMgrNam
e/active/
)
,使用
ls <
/p>
–
l|wc
命令统计。
< br>
4.
检查
MQ
队列管理器错误日志
当
系统运行不正常时首先检查:
/var/mqm/qmgrs/QMgrName/er
rors/
错误消息生成后总是放在
AMQERR01
中,
AMQERR02
和
AMQERR03
文件用于保存历史错
误消息
2.2.2
触发类型
l EVERY
:
< br>应用队列中每接受到一个消息时,
都将产生触发消息。
如
果应用程序仅仅处理一个消息就结
束,可采用这种触发类型。
l FIRST
:
< br>应用队列中消息从
0
变为
1
p>
时会触发事件。如果当队列中的一个消息到达时启动程序,直到
处理
完所有消息才结束,则采用这种触发类型。
l
DEPTH
:
应用队列中消息数目和
TriggerDepth
(引起触发事件发生时,
队列中的消息数目)
属性值相
同时,
才会产生触发事件。当一系列请求的回复都收到时,才启动应用程序,则可以采用这
< br>种方法。
需要注意的时,
当<
/p>
DEPTH
属性值为
0
< br>的时候,
实际上就形成了同步通信。
另外,
当采用
Depth
触发时,产生触发消息以后,队列
将被修改为非触发方式,如果需要再次触发,需要重新设
置成允许触发。
一般而言,在实际应用中,如果通道设置成触发方式,触发类型往往设置成为
FIRST
和
DEPTH
。
2.2.3
触发器工作流程
1)
本地或远程应用程序
A
,往应用队列
(Application Queue)
中
PUT
了一条消息。
2)
p>
如果队列的触发类型设置为
first
,<
/p>
当队列原来深度为
0
时
< br>(队列为空)
,
这时
PUT
p>
一条消息到队列中将形成触发事件,
同时产生一条触发消息,
触发消息中将包含进程定义中
的信息,
因为进
程定义中包含启动程序
B
所需的信息,
所以触发消息中也包含了启动程序
B
所需的信息。
3)
队列管理器创建触发消息,并把它
P
UT
入与应用队列相关的启动队列
Initiation
Queue
。
4)
触发监控器
(Trigger
Monitor)
从启动队列
(Initiation Que
ue)
中
GET
触发消息。
5)
触发监控器处理触发消息,发出启动应用程序
B
的命令。
6)
应用程
序
B
打开应用队列
(Applicat
ion Queue)
,并处理队列中的消息。
注:如果是通道触发将可以不需要创建进程对象(
process
object
)
,只是在传输队列的
trigdata
中设置需要启动的通道名。
2.2.4
配置消息通道触发
配置消息通道触发启动,
需要使用到的对象有传输队列,
通道启动队列,发送通道,通道启
动器。
我们本配置案例中传
输队列名是
QMB
,
通道启动队列采用
,
发送通道名
,通道启动器为
runmqchi
,该
进程在队列管理器启动的时候自动启
动。下面我们通过举例来演示配置实现消息通道触发
启动。
l
首先我们来查看一下传输
队列
QMB
都有哪些属性,显示如下清单所示,其中清单中的标
注红色的属性和通道触发配置相关。
dis ql(QMB)
1 :
dis ql(QMB)
AMQ8409:
显示队列细节。
QUEUE(QMB)
TYPE(QLOCAL)
ACCTQ(QMGR)
ALTDATE(2009-02-06)
ALTTIME(11.41.44)
BOQNAME( )
BOTHRESH(0)
CLUSNL( )
CLUSTER( )
CLWLPRTY(0)
CLWLRANK(0)
CLWLUSEQ(QMGR)
CRDATE(2008-12-05)
CRTIME(10.37.53)
CURDEPTH(0)
DEFBIND(OPEN)
DEFPRTY(0)
DEFPSIST(NO)
DEFSOPT(SHARED)
DEFTYPE(PREDEFINED)
DESCR( )
DISTL(YES)
GET(ENABLED)
HARDENBO
INITQ( )
IPPROCS(1)
MAXDEPTH(5000)
MAXMSGL(4194304)
MONQ(QMGR)
MSGDLVSQ(PRIORITY)
TRIGGER
NPMCLASS(NORMAL)
OPPROCS(1)
PROCESS( )
PUT(ENABLED)
QDEPTHHI(80)
QDEPTHLO(20)
QDPHIEV(DISABLED)
QDPLOEV(DISABLED)
QDPMAXEV(ENABLED)
QSVCIEV(NONE)
QSVCINT(999999999)
RETINTVL(999999999)
SCOPE(QMGR)
SHARE
STATQ(QMGR)
TRIGDATA( )
TRIGDPTH(1)
TRIGMPRI(0)
TRIGTYPE(FIRST)
USAGE(XMITQ)
l
设置
传输队列为触发模式
TRIGGER
。
l
设置触发类型为
every/fi
rst/depth
其中的一种,例如
TRIGTYPE(FI
RST)
。如果设置为
TRIGTYPE(DEPTH)
,则还需要设置触发深度属性,例如
TRIGDPTH(4)
,表示当队列中的消
息数由
3
< br>个增加到
4
个的时候才能形成触发事件,但需要注意的是
深度触发事件只能产生一
次事情,下次传输队列的消息数由
3<
/p>
个增加到
4
个时候不会产生触发事件,所
以在消息通道
触发中,我们推荐采用
TRIGTYPE(FIR
ST)
。
l
在通道触发中,
推荐使用
队列作为初
始队列,
该队列为
MQ
专
用
的
通
< br>道
启
动
队
列
,
不
需
要
手
工
启
动<
/p>
其
触
发
监
视
器
,
设
置
传
输
队
列
INITQ( )
属性。
l
通过
TRIGDATA
属性设置需要触发的通道名,例如
TRIGDATA(
)
。
l
对
于
TRIGMPRI
属性的含义是基于消息优先级触发,
也即某类优先级的消息满足的触发条
件才产生触发事件,我们在消息通
道触发中不推荐使用。
完整
MQSC
命令参考如下:
ALTER
QL(QMB) +
TRIGGER +
TRIGTYPE(FIRST) +
INITQ() +
TRIGDATA()
l
通道的触
发监控器我们采用系统的自带的
runmqchi
程序,缺省队
列管理器启动的时候,
runmqchi
进程会自动启动。
p>
7.6.3.1
通道的状态
下图显示了所有可能的通道状态层次结构,在
WebSphere
MQ for AIX,
iSeries, HP-UX,
Linux
,
Solaris,
和
Windows
systems,
和
WebSphere MQ V5.1 for OS/2 Warp
< br>平台,这些
状态对
服务器
连接通
道也适用。
-
-
-
-
-
-
-
-
-
上一篇:ABB机器人全部运算符及其功能
下一篇:TD-LTE网络优化介绍