使用WebSphere MQ Classes查找.Net的XMIT队列深度

时间:2014-06-24 07:21:12

标签: ibm-mq

我希望使用WebSphere MQ类为.Net获取Queue Depth XMIT 队列)的Transmission Queue,有人可以帮我提供具体的link / Pseudocode或.Net Classes / API来标识XMIT队列深度。我已经浏览了.Net API,但没有在XMIT队列中找到任何信息。

1 个答案:

答案 0 :(得分:1)

您可以使用MQ .NET PCF接口查询队列属性。以下是示例代码段。

注意:MQ .NET PCF接口是未记录的接口,可能不受支持。您需要咨询IBM。

    public static void InquireQueue()
    {
        PCFMessageAgent messageAgent = null;
        try
        {
            // Create connection to queue manager
            messageAgent = new PCFMessageAgent("QM3");

            // Build Inquire command to query attributes a queue
            PCFMessage pcfMsg = new PCFMessage(MQC.MQCMD_INQUIRE_Q);
            pcfMsg.AddParameter(MQC.MQCA_Q_NAME, "TO.QM2");

            // Send request and receive response
            PCFMessage[] pcfResponse = messageAgent.Send(pcfMsg);

            // 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_CURRENT_Q_DEPTH) 
                        Console.WriteLine("Queue Depth" + " - " + pm.GetValue());
                }
            }
        }
        catch (PCFException pcfEx)
        {
            Console.Write(pcfEx);
        }
        catch (MQException ex)
        {
            Console.Write(ex);
        }
        finally
        {
            if (messageAgent != null)
                messageAgent.Disconnect();
        }
    }