使用C#和.Net连接到远程队列管理器

时间:2010-11-04 20:48:47

标签: c# ibm-mq

我编写了一个使用此函数调用连接到本地队列管理器的应用程序:

MQQueueManager mqQMgr = new MQQueueManager("QM_QueueManagerName");

现在我需要连接到另一台计算机上的远程队列管理器。

我可以使用我的开发PC使用MQ资源管理器成功连接到远程队列管理器,使用QM_ComputerName作为队列管理器名称,S_ComputerName作为通道,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 个答案:

答案 0 :(得分:4)

这就是我开始工作的方式:

 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)

   {

   }

答案 1 :(得分:3)

也许this sample code会有所帮助。

我链接到V7文档。理想情况下,您将同时使用V7客户端并与V7服务器通信,因为.Net功能在V6上有很大改进。此外,截至2011年9月,V6已经停止使用,因此现在直接进入v7并避免以后升级会很不错。

如果您需要包含更新的.Net示例和类的v7 WMQ客户端,请转至IBM MQ Client Downloads页面(需要IBM ID,但可以免费下载)。

更新20180810: 更改链接以指向所有IBM MQ客户端下载的IBM新页面。