【问题标题】:MQCMD_INQUIRE_Q_STATUS, PCF command returns "Unknown type" exceptionMQCMD_INQUIRE_Q_STATUS,PCF 命令返回“未知类型”异常
【发布时间】:2015-11-12 08:47:38
【问题描述】:

我正在使用以下代码来返回队列的句柄,如果队列没有任何句柄(打开的输入/输出计数为 0),它会返回 MQRCCF_Q_STATUS_NOT_FOUND 但当它有一些打开的句柄时,它会返回“未知类型”异常。

    public void getQueue(string Name)
    {
            PCFMessage reqeuestMessage = new PCFMessage(MQC.MQCMD_INQUIRE_Q_STATUS);
            reqeuestMessage.AddParameter(MQC.MQCA_Q_NAME, Name);
            reqeuestMessage.AddParameter(CMQCFC.MQIACF_Q_STATUS_TYPE, CMQCFC.MQIACF_Q_HANDLE);
            PCFMessage[] response = agent.Send(reqeuestMessage);
            foreach (PCFMessage st in response)
            {
                ...
            }
    }

【问题讨论】:

    标签: c# ibm-mq pcf


    【解决方案1】:

    C# 对 MQ PCF 的支持有限,因此可能不支持某些参数。您尝试查询的参数可能不在支持的参数列表中。请注意 .NET 中的 MQ PCF 不受 IBM MQ 官方支持。

    如果您的目的是查询应用程序打开输入和输出队列的数量,您可以使用 INQUIRE_Q 命令并过滤掉输入/输出计数。示例 sn-p 在这里:

                PCFMessage reqeuestMessage = new PCFMessage(MQC.MQCMD_INQUIRE_Q);
                reqeuestMessage.AddParameter(MQC.MQCA_Q_NAME, "Q1");
    
                // Send request and receive response
                PCFMessage[] pcfResponse = messageAgent.Send(reqeuestMessage);
    
                // Process and print response.
                int pcfResponseLen = pcfResponse.Length;
                for (int pcfResponseIdx = 0; pcfResponseIdx < pcfResponseLen; pcfResponseIdx++)
                {
                    PCFParameter[] parameters = pcfResponse[pcfResponseIdx].GetParameters();
                    foreach (PCFParameter pm in parameters)
                    {
                        // We just want to print current queue depth only
                        if ((pm.Parameter == MQC.MQIA_OPEN_OUTPUT_COUNT) || (pm.Parameter == MQC.MQIA_OPEN_INPUT_COUNT))
                            Console.WriteLine("Parameter: " + pm.Parameter + " - Value: " + pm.GetValue());
                    }
                }
    

    希望这有帮助

    【讨论】:

    • 谢谢,不,我得到了输入计数。我想知道现在连接到队列的句柄(应用程序)
    • "请注意 MQ PCF 不受 IBM MQ 官方支持。" 我希望对此有所不同,Shashi。 IBM most definitely supports PCF。也许您的意思是将其限定为“.Net 不支持 PCF”或类似的东西?
    猜你喜欢
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 2011-07-19
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多