WebSphere MQ报错JMSCMQ0001/MQRC_GET_INHIBITED的原因及解决方法
从你贴的错误堆栈来看,核心问题是MQRC_GET_INHIBITED(错误码2016)——这是WebSphere MQ里典型的队列访问限制问题,我来给你拆解下原因和解决办法:
核心异常片段:
Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2016' ('MQRC_GET_INHIBITED').
错误原因分析
这个错误码的字面意思是队列被禁止执行GET操作,也就是不允许从该队列中取出消息。常见触发场景包括:
- 队列的
Inhibit Get属性被手动设置为Yes(默认是No) - 管理员在维护队列时临时开启了这个限制,后续忘记恢复
- 自动化运维脚本、监控工具误修改了队列的关键属性
对应的解决方法
1. 确认队列属性问题
用MQ Explorer图形工具或者runmqsc命令行工具连接到你的MQ管理器,检查目标队列的Inhibit Get属性:
# 进入runmqsc交互模式,替换[MQ管理器名称]为实际值 runmqsc [MQ_MANAGER_NAME] # 查看目标队列的Inhibit Get属性,替换[队列名称] DISPLAY QLOCAL([QUEUE_NAME]) INHIBITGET
如果返回结果是INHIBITGET(YES),那就坐实了是这个属性导致的问题。
2. 修改队列属性恢复GET权限
在runmqsc交互模式中执行修改命令:
ALTER QLOCAL([QUEUE_NAME]) INHIBITGET(NO)
执行完成后可以再用DISPLAY命令确认属性已经变更为INHIBITGET(NO)。
3. 排查属性变更的根源
- 询问运维团队近期是否有对该队列做过维护操作
- 查看MQ的系统日志(比如
AMQERR01.LOG),搜索是否有修改队列属性的记录 - 如果是自动化工具导致的误修改,需要调整工具配置,避免再次触发类似问题
4. 验证恢复效果
重启你的JMS消费程序,或者手动触发一次消息接收操作,确认是否还会抛出原异常。
内容的提问来源于stack exchange,提问作者user2553710
相关产品推荐
相关产品推荐

