我编写了一个使用此函数调用连接到本地队列管理器的应用程序:
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");
我在两种情况下都会收到错误。
任何人都可以提供建议吗?
答案 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新页面。