C# для IBM MQ - MQ C .MQCMD_INQUIRE_Q команда не распознана? - PullRequest
0 голосов
/ 29 апреля 2020

Используя классы IBM. NET, я пишу приложение C# для мониторинга IBM MQ. Я могу подключиться к администратору очередей и очереди, и я могу читать сообщения и их длину. У меня была удача, пока ...

Я не могу понять, как перечислить имена очередей в администраторе очередей. Да, я знаю, что IBM не предлагает никаких классов. NET для этой функции; они предлагают их только в Java, что для меня запрещено. Тем не менее, я читал здесь и на нескольких других платах, что это возможно с помощью обходного пути (ниже).

Проблема в том, что я получаю сообщение об ошибке: «MQ C не содержит определения для MQCMD_INQUIRE_Q. " Я снова ссылался на DLL, пробовал всевозможные «использования» и даже пытался заменить MQCMD_INQUIRE_Q другими подобными командами в MQ C, но все безуспешно.

Снимок экрана ошибки:

enter image description here

Мой код:

public void InquireQueues()
{
    try
    {
        PCFMessageAgent messageAgent = new PCFMessageAgent("QM");

        //Error is on the following line
        PCFMessage pcfMsg = new PCFMessage(MQC.MQCMD_INQUIRE_Q);
        pcfMsg.AddParameter(MQC.MQCA_Q_NAME, "*");
        pcfMsg.AddParameter(MQC.MQIA_Q_TYPE, MQC.MQQT_LOCAL);

        PCFMessage[] pcfResponse = messageAgent.Send(pcfMsg);
        int pcfResponseLen = pcfResponse.Length;

        for (int pcfResponseIdx = 0; pcfResponseIdx < pcfResponseLen; pcfResponseIdx++)
        {
            PCFParameter[] parameters = pcfResponse[pcfResponseIdx].GetParameters();
            foreach (PCFParameter pm in parameters)
            {
                Console.WriteLine(pm.Parameter + " - " + pm.GetValue());
            }
        }
        messageAgent.Disconnect();
    }
    catch (MQException ex)
    {
        Console.Write(ex);
    }
}

Я использую. NET 4.5.2 и последний amqm dnet. Библиотека DLL. Кто-нибудь преодолел эту проблему или есть другая идея? Спасибо.

...