关键词不能为空

当前您在: 主页 > 英语 >

MQ常用命令

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-09 08:12
tags:

-

2021年2月9日发(作者:氦怎么读)


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


来终止,终止进程


的顺序如下

< p>
(


不存在的进程可以忽略)



kill amqpcsea



命令服务器



kill amqhasmx



记录器



kill amqharmx



日志 格式化器(仅


LINEAR


日志)



kill amqzllp0



检查点处理器



kill amqzlaa0



队列管理器代理



kill amqzxma0



处理控制器



kill amqrrmfa



库进程(用于群集)



C.

< p>
清理所有残留在系统内部的信号灯和共享内存(其属主和组均为


mqm




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


时会触发事件。如果当队列中的一个消息到达时启动程序,直到


处理 完所有消息才结束,则采用这种触发类型。



l DEPTH




应用队列中消息数目和


TriggerDepth


(引起触发事件发生时,

< p>
队列中的消息数目)


属性值相


同时,


才会产生触发事件。当一系列请求的回复都收到时,才启动应用程序,则可以采用这

< br>种方法。



需要注意的时,


当< /p>


DEPTH


属性值为


0

< br>的时候,


实际上就形成了同步通信。


另外,


当采用


Depth


触发时,产生触发消息以后,队列 将被修改为非触发方式,如果需要再次触发,需要重新设


置成允许触发。



一般而言,在实际应用中,如果通道设置成触发方式,触发类型往往设置成为


FIRST



DEPTH




2.2.3




触发器工作流程




1)









本地或远程应用程序


A


,往应用队列


(Application Queue)


PUT


了一条消息。



2)









如果队列的触发类型设置为


first


,< /p>


当队列原来深度为


0


< br>(队列为空)



这时


PUT


一条消息到队列中将形成触发事件,


同时产生一条触发消息,


触发消息中将包含进程定义中


的信息,


因为进 程定义中包含启动程序


B


所需的信息,


所以触发消息中也包含了启动程序


B


所需的信息。



3)









队列管理器创建触发消息,并把它


P UT


入与应用队列相关的启动队列


Initiation


Queue




4)









触发监控器


(Trigger Monitor)


从启动队列


(Initiation Que ue)



GET


触发消息。

< p>


5)









触发监控器处理触发消息,发出启动应用程序


B


的命令。



6)









应用程 序


B


打开应用队列


(Applicat ion Queue)


,并处理队列中的消息。



注:如果是通道触发将可以不需要创建进程对象(


process


object



,只是在传输队列的

< p>
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>









< p>






INITQ( )


属性。



l


通过


TRIGDATA

< p>
属性设置需要触发的通道名,例如


TRIGDATA( )




l


对 于


TRIGMPRI


属性的含义是基于消息优先级触发,


也即某类优先级的消息满足的触发条


件才产生触发事件,我们在消息通 道触发中不推荐使用。



完整


MQSC


命令参考如下:



ALTER QL(QMB) +


TRIGGER +


TRIGTYPE(FIRST) +


INITQ() +


TRIGDATA()


l


通道的触 发监控器我们采用系统的自带的


runmqchi


程序,缺省队 列管理器启动的时候,


runmqchi


进程会自动启动。



7.6.3.1


通道的状态




下图显示了所有可能的通道状态层次结构,在



WebSphere


MQ for AIX, iSeries, HP-UX,


Linux


, Solaris,



Windows


systems,




WebSphere MQ V5.1 for OS/2 Warp

< br>平台,这些


状态对


服务器


连接通 道也适用。



-


-


-


-


-


-


-


-



本文更新与2021-02-09 08:12,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/619963.html

MQ常用命令的相关文章