Подключение к удаленному администратору очередей с помощью 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)
{
}