Подключение к удаленному администратору очередей с помощью C# and.Net

я написал приложение, подключенное к локальному администратору очередей, используя этот вызов функции:

MQQueueManager mqQMgr = new MQQueueManager("QM_QueueManagerName");

теперь мне нужно подключиться к удаленному администратору очередей на другом компьютере.

Я могу успешно подключиться к удаленному администратору очередей с помощью MQ Explorer с моего ПК разработки с помощью QM_ComputerName как имя администратора очередей S_ComputerName как канал и Имя_компьютера как имя соединения. Таким образом, он доступен с моего рабочего стола.

однако, когда я пытаюсь подключиться через .Net, я получаю MQRC_Q_MGR_NAME_ERROR независимо от того, что я пытаюсь.

Я попытался указать

MQEnvironment.Hostname = "ComputerName";
MQEnvironment.Channel = "S_ComputerName ";

and then calling

mqQMgr = new MQQueueManager("QM_ComputerName");

I also tried  calling 

mqQMgr = new MQQueueManager("QM_ComputerName", "S_ComputerName", "ComputerName");

я получаю ошибку в обоих случаях.

кто-нибудь может посоветовать?

2 ответов


возможно этот пример кода поможет.

Я связался с документами V7. В идеале вы будете использовать клиент V7 и разговаривать с сервером V7, потому что функциональность .Net значительно улучшена в них по сравнению с V6. Кроме того, V6 заканчивается в сентябре 2011 года, поэтому было бы хорошо перейти прямо на v7 сейчас и избежать обновления позже.

Если вам нужен клиент WMQ v7, который включает обновленные образцы и классы .Net, перейдите в клиент IBM MQ Загрузки страница (требуется IBM ID, но это бесплатная загрузка).

обновление 20180810: изменена ссылка, указывающая на новую страницу IBM для всех загрузок клиентов IBM MQ.


вот как я заставил его работать:

 MQQueueManager mqQMgr=null;

   Hashtable props = new Hashtable();

props.Add(MQC.HOST_NAME_PROPERTY, "HostNameOrIP");

   props.Add(MQC.CHANNEL_PROPERTY, "ChannelName");

   props.Add(MQC.PORT_PROPERTY, 1414); // port number

   props.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);

   MQQueue mqQueue = null;

   try

   {

      mqQMgr = new  MQQueueManager("QueueManagerName", props);

      mqQueue = mqQMgr.AccessQueue(
               QueueName,
               MQC.MQOO_OUTPUT                   // open queue for output
               + MQC.MQOO_FAIL_IF_QUIESCING);   // but not if MQM stopping
   }

   catch (MQException mqe1)

   {

   }