Ibm mq “如何解决问题”;com.ibm.mq.MQException:MQJE001:完成代码2,原因2040“;

Ibm mq “如何解决问题”;com.ibm.mq.MQException:MQJE001:完成代码2,原因2040“;,ibm-mq,Ibm Mq,我使用了下面的代码来禁止队列,但是当我尝试禁止队列时,我得到了错误。 我已经尝试了针对特定队列的各种开放选项,但仍然存在问题。我在代码中还遗漏了什么 public void control(String mgrName, String queueName, int openOptions, string option)throws MQException{ qMgr = new MQQueueManager(mgrName); mqQueue = qMgr.ac

我使用了下面的代码来禁止队列,但是当我尝试禁止队列时,我得到了错误。
我已经尝试了针对特定队列的各种开放选项,但仍然存在问题。我在代码中还遗漏了什么

     public void control(String mgrName, String queueName, int openOptions, string option)throws MQException{
     qMgr = new MQQueueManager(mgrName);
       mqQueue = qMgr.accessQueue(queueName, openOptions);    
       if (option.equalsIgnoreCase("stop")){
            System.out.println("Stop mesage received");
             mqQueue.setInhibitGet(MQC.MQQA_GET_INHIBITED);
             System.out.println("Queue inhibitted successfully");
        }else if(option.equalsIgnoreCase("start")){
            System.out.println("Start mesage received");
            mqQueue.setInhibitGet(MQC.MQQA_GET_ALLOWED);
            System.out.println("Queue get allowed successfully");
        }
}
调用此方法时出现以下错误。

com.ibm.mq.MQException:MQJE001:完成代码2,原因2040

2040=MQRC\u未\u打开\u集合。IBM v7.5知识中心页面“”描述了此错误的原因:

解释

已发出MQSET调用以设置队列属性,但尚未为set打开队列

程序员响应

打开对象时指定MQOO_集

如果
openOptions
传递给
control
included
MQOO_SET
则错误应消失

示例如下:

int openOptions = MQConstants.MQOO_FAIL_IF_QUIESCING | MQConstants.MQOO_SET

谢谢@Josh,我使用了旧版本的jar。仅具有MQC接口常量的。我发现MQOO_SET常量值为64。并直接硬编码,因此它已按预期工作。谢谢你的例子。(我已经访问过该站点,但我找不到该MQOO_集,再次感谢通知MQConstants)如果_QUIESCING@Fresher,您使用的是什么版本的jar文件?v7.1之前的任何MQ版本及其关联的jar文件都不受支持。7.1于2017年4月30日失效。示例
MQSample.java
import com.ibm.mq.constants.MQConstants
@freasher
MQOO\u FAIL\u中提取MQConstans,如果mq 7.5知识中心页面“”中记录了\u QUIESCING
,则当队列管理器处于静止状态时,MQOPEN调用失败。QUIESCING=关闭。