如何清除问题“com.ibm.mq.MQException:MQJE001:完成代码2,原因2040”

时间:2017-02-21 07:02:06

标签: ibm-mq

我使用下面的代码来禁止队列但是当我试图禁止时我得到了错误 我已经尝试了特定队列的各种打开选项,但我仍然有问题。我在代码中错过了什么;

     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

1 个答案:

答案 0 :(得分:1)

2040 = MQRC_NOT_OPEN_FOR_SET。 IBM v7.5知识中心页面“2040 (07F8) (RC2040): MQRC_NOT_OPEN_FOR_SET”描述了此错误的原因:

  

<强>解释

     

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

     

程序员回复

     

打开对象时指定MQOO_SET。

如果openOptions传递给control包含MQOO_SET,则错误应该消失。

以下示例:

int openOptions = MQConstants.MQOO_FAIL_IF_QUIESCING | MQConstants.MQOO_SET