本文介绍了使用C#从IBM Queue中读取meaasge的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的朋友,
我是IBM MQSeries的新手.我正在尝试开发一个应用程序,该应用程序将消息从XML文件传递到IBM队列,然后从响应队列中读取响应,最后使用C#在某些控件上显示响应消息的内容.到目前为止,我仍然可以将消息传递到队列,但是在读取响应消息时遇到了问题.我使用的代码如下,并且在e注释"//从IBM Queue读取响应消息"之后的部分生成错误2039,我已经看到了说明,但无法解决.请向我提出您的意见,谢谢!

Dear Friends,
I am new to IBM MQSeries. I am trying to develop an application that passes message from an XML file to IBM queue and then read the response from the response queue, and finally display the content of the response message on some control using C#. Until now i am able to pass the message to the queue, but i have faced problem in reading the response message. The code i use is as follows and the part after e comment "//read response message from IBM Queue" generates error 2039, i have seen the description but unable to solve it. Pls forward to me your comments, Thanks!

StreamReader sr = File.OpenText("\\abc.xml");
        string s =  sr.Read().ToString();
        
        MQQueueManager mqQMgr;
        try
        {
            mqQMgr = new MQQueueManager("QM_APPLE", "SYSTEM.DEF.SVRCONN", "127.0.0.1(1414)");
            MQQueue requestQueue = mqQMgr.AccessQueue("Q1",
                        MQC.MQOO_OUTPUT // open queue for output
                        + MQC.MQOO_FAIL_IF_QUIESCING); // but not if 
            // MQM stopping
            MQQueue responseQueue = mqQMgr.AccessQueue("Q2",
            MQC.MQOO_INPUT_AS_Q_DEF         // open queue for input
            + MQC.MQOO_FAIL_IF_QUIESCING);

            MQMessage requestMessage = new MQMessage();
            requestMessage.WriteString(s);
            requestMessage.Format = MQC.MQFMT_STRING;
            requestMessage.MessageType = MQC.MQMT_REQUEST;
            requestMessage.Report = MQC.MQRO_COPY_MSG_ID_TO_CORREL_ID;
            requestMessage.ReplyToQueueName = "Q2";
            requestMessage.ReplyToQueueManagerName = "MQ_APPLE";
            requestQueue.Put(requestMessage);                  


            //read response message from IBM Queue
            MQMessage responseMessage = new MQMessage();
            MQPutMessageOptions pmo = new MQPutMessageOptions();
            pmo.Options = MQC.MQPMO_NONE;
            if ((requestMessage.Report & MQC.MQRO_PASS_MSG_ID) == MQC.MQRO_PASS_MSG_ID)
                responseMessage.MessageId = requestMessage.CorrelationId;
            else                        // Assume MQRO_NEW_MSG_ID
                pmo.Options = MQC.MQPMO_NEW_MSG_ID;
            if ((requestMessage.Report & MQC.MQRO_PASS_CORREL_ID) ==
                                                   MQC.MQRO_PASS_CORREL_ID)
                responseMessage.CorrelationId = requestMessage.CorrelationId;
            else                   // Assume MQRO_COPY_MSG_ID_TO_CORREL_ID
                responseMessage.CorrelationId = requestMessage.MessageId;
            responseMessage.MessageType = MQC.MQMT_REPLY;
            
            responseMessage.WriteString("Done");
            responseQueue.Put(responseMessage);

            if (responseQueue.OpenStatus)
                responseQueue.Close();
            //if (mqQMgr.ConnectionStatus)
            //    mqQMgr.Disconnect();          
        
        }
        catch (MQException mqe)
        {
            lblMessage.Text = mqe.Reason.ToString();
            goto Wuta;
        }

推荐答案


这篇关于使用C#从IBM Queue中读取meaasge的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-02 12:19