MQ QDepth,不知道queueManagerName

时间:2013-11-18 03:35:14

标签: c# ibm-mq

我正在尝试检查远程队列的统计信息,但是我需要在不使用queueManagerName的情况下进行连接。我知道有可能但是我找不到一个例子或让我的代码工作?

    Hashtable properties = new Hashtable();
    properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT);
    properties.Add(MQC.CHANNEL_PROPERTY, channel);
    properties.Add(MQC.HOST_NAME_PROPERTY, host);
    properties.Add(MQC.PORT_PROPERTY, port);

    MQQueueManager qmgr = new MQQueueManager(queueManager, properties);

    try
    {
        var queueDepth = qmgr.AccessQueue(userQueue,
                                          MQC.MQOO_INPUT_AS_Q_DEF +
                                          MQC.MQOO_FAIL_IF_QUIESCING +
                                          MQC.MQOO_INQUIRE).CurrentDepth;

        var maxDepth = qmgr.AccessQueue(userQueue,
                          MQC.MQOO_INPUT_AS_Q_DEF +
                          MQC.MQOO_FAIL_IF_QUIESCING +
                          MQC.MQOO_INQUIRE).MaximumDepth;

        if (qmgr.IsOpen)
            qmgr.Close();

        Console.WriteLine(queueDepth);
    }
    finally
    {
        if (qmgr.IsOpen)
            qmgr.Close();
    }
} 

1 个答案:

答案 0 :(得分:1)

您的示例代码对我来说非常合适,并且可以正确打印队列深度。我只是更改了这一行:

MQQueueManager qmgr = new MQQueueManager(queueManager, properties);

to,只是将“”(空白)作为队列管理器名称传递,因为您的要求是不使用队列管理器名称。

MQQueueManager qmgr = new MQQueueManager("", properties);