【问题标题】:Error in application when try to open message queue?尝试打开消息队列时应用程序出错?
【发布时间】:2014-03-20 22:31:33
【问题描述】:

我是 WebSphere Message Queue 技术的新手。我有以下两行代码,它工作正常。它返回 "Connected Succesfully" 消息

queueManager =new MQQueueManager(QueueManagerName,channelName,connectionName);
strReturn = "Connected Successfully";

但是在它们之间添加另一行代码后,它抛出了一个异常,说"Error in the application"

queueManager = new MQQueueManager(QueueManagerName,channelName,connectionName);
queueManager.Connect();  // <-- added this line
strReturn = "Connected Successfully";

我很确定连接详细信息没问题,因为它已连接。但我无法连接到队列。谁能帮助我。

【问题讨论】:

    标签: .net message-queue ibm-mq


    【解决方案1】:

    你应该这样做:

    System.String line = "This is a test message embedded in the MQTest01 program.";
    int openOptions = MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING;
    
    try
    {
       MQQueueManager _qMgr = new MQQueueManager(qManager);
       System.Console.Out.WriteLine("MQTest01 successfully connected to " + qManager);
    
       MQQueue queue = _qMgr.AccessQueue(outputQName, openOptions, null, null, null);
       System.Console.Out.WriteLine("MQTest01 successfully opened " + outputQName);
    
       MQPutMessageOptions pmo = new MQPutMessageOptions();
    
       MQMessage sendmsg = new MQMessage();
       sendmsg.Format = MQC.MQFMT_STRING;
       sendmsg.Feedback = MQC.MQFB_NONE;
       sendmsg.MessageType = MQC.MQMT_DATAGRAM;
       sendmsg.MessageId = MQC.MQMI_NONE;
       sendmsg.CorrelationId = MQC.MQCI_NONE;
       sendmsg.WriteString(line);
    
       // put the message on the queue
       queue.Put(sendmsg, pmo);
       System.Console.Out.WriteLine("Message Data>>>" + line);
    
       queue.Close();
       System.Console.Out.WriteLine("MQTest01 closed: " + outputQName);
       _qMgr.Disconnect();
       System.Console.Out.WriteLine("MQTest01 disconnected from " + qManager);
    }
    catch (MQException mqex)
    {
       System.Console.Out.WriteLine("MQTest01 cc=" + mqex.CompletionCode + " : rc=" + mqex.ReasonCode);
    }
    catch (System.IO.IOException ioex)
    {
       System.Console.Out.WriteLine("MQTest01 ioex=" + ioex);
    }
    

    【讨论】:

      【解决方案2】:

      除了构造函数之外不需要调用任何东西来连接到 MQ 队列管理器。下面一行就足够了。

      queueManager = new MQQueueManager(QueueManagerName,channelName,connectionName);
      

      MQQueueManager .NET 接口中没有Connect 方法。我想知道您的应用程序是如何编译的。请查看随 WebSphere MQ 提供的示例。您可以在 \tools\dotnet\samples\cs\base 中找到它们。

      【讨论】:

        猜你喜欢
        • 2016-12-11
        • 1970-01-01
        • 2012-12-05
        • 1970-01-01
        • 2017-10-02
        • 1970-01-01
        • 2021-01-22
        • 1970-01-01
        • 2020-05-28
        相关资源
        最近更新 更多