mq队列问题排查

问题:

使用A工具向队列里发消息,从应用程序日志里找不到队列收到的消息。

排查思路:

  • 1.A工具拦截了消息(原因是发送的消息格式不对,A工具自动拦截),导致队列没有收到消息。
  • 2.操作的问题,这个业务就不应该用使用A工具发消息的方式,而应该通过应用程序界面导入消息文件。
  • 3.mq队列的问题
    – 3.1.mq队列管理器是否关闭,如果关闭,则需要启动队列管理器。
    – 3.2.mq队列是否堵塞,检查方式:看队列深度是否减少,如果队列深度一直增加而不减少,则需要清队列。
    – 3.3.消息进入队列,但是消息被其他应用消费了。
    此时看队列连接状态,找到是否有其他连接。如果有,则可能其他连接消费了报文。按道理一个队列只会被一个应用程序连接,如果其他环境连错了,就可能取走队列里的消息。解决办法:找到其他连接的服务器ID,让他们不要连接了。
    – 3.4.把队列改成禁止取消息,发送一条消息给队列,查看队列深度是否加1,如果加1则消息进入队列了。
    ALTER QLOCAL(队列名) GET(DISABLED) 关闭队列的取消息功能
    dis ql(队列名称) 查看队列详情----可以看到队列深度
    – 3.5.消息进入队列了,但是应用程序的日志还是找不到消息。则怀疑是队列的取消息功能被关闭了。
    ALTER QLOCAL(队列名) GET(ENBALED) 打开队列的取消息功能
    dis ql(队列名称) 查看队列详情----可以看到队列是否打开取消息功能
    – 3.6.如果通过排查3.4发现消息没有进队列,则需要看看队列是否关闭了收消息功能。如果关闭了,则需要重新打开收消息功能。
    ALTER QLOCAL(队列名) PUT(ENBALED) 打开队列的收消息功能
    dis ql(队列名称) 查看队列详情----可以看到队列是否打开收消息功能

队列常用操作:

前置条件:登录mq所在服务器
  • 1.查看队列管理器: dspmq (running状态就是运行中,如果是stop的话需要启动一下)
  • 2.进入队列管理器命令行: runmqsc 队列管理器名称
  • 3.退出2中命令行: exit
  • 4.在2中命令行可以执行的命令
    dis ql(*) 显示队列管理器下所有队列
    dis ql(队列名称) 查看队列详情
    dis ql(队列名称) curdepth 显示队列深度
    ALTER QLOCAL(队列名) PUT(DISABLED) 关闭队列的收消息功能(队列不可收消息,队列深度不会增加)
    ALTER QLOCAL(队列名) PUT(ENBALED) 打开队列的收消息功能(队列可收消息)
    ALTER QLOCAL(队列名) GET(DISABLED) 关闭队列的取消息功能(其他系统没法消费队列里的消息,队列里消息数不会减少)
    ALTER QLOCAL(队列名) GET(ENBALED) 打开队列的取消息功能
    clear ql(队列) 清除队列里的消息
    dis qs(队列名) type(handle) all 显示当前队列的连接信息(如果多个IP连这个队列的话,消息可能被其他系统取走)

通道、队列、队列管理器的其他操作:

1.通道

Dis chs(name) 查看通道状态
Start chl(name) 启动通道
Stop chl(name) 关闭通道
Reset chl(name) 重置通道

2.队列

Dis ql(*) curdepth 显示所有队列当前深度
Dis ql(qname) curdepth 显示队列当前深度,即当前队列的消息数
Dis qs(qname) type(queue) all 显示与队列相关的状态信息
Dis qs(qname) type(handle) all 显示与访问队列的句柄相关的状态信息
Delete ql(qname) 删除队列
Clear ql(name) 删除队列中的消息

3.队列管理器

crtmqm -q 名字 创建队列管理器
strmqm 名称 启动队列管理器
runmqsc 名字 运行队列管理器
dspmq 查看队列管理器状态
endmqm 名称 停止队列管理器
endmqm -i 名称 立即停止队列管理器
endmqm -p 名称 强制停止队列管理器
dltmqm 名称 删除队列管理器
define/def qlocal/ql (name) 创建本地队列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值