我编写了一个使用此函数调用连接到本地队列管理器的应用程序:
MQQueueManager mqQMgr = new MQQueueManager("QM_QueueManagerName");
Run Code Online (Sandbox Code Playgroud)
现在我需要连接到另一台计算机上的远程队列管理器.
我可以使用MQ Explorer从我的开发PC使用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");
Run Code Online (Sandbox Code Playgroud)
我在两种情况下都会出错.
有人可以提供建议吗?
这就是我让它工作的方式:
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)
{
}
Run Code Online (Sandbox Code Playgroud)
也许这个示例代码会有所帮助。
我链接到 V7 文档。理想情况下,您将使用 V7 客户端并与 V7 服务器通信,因为这些中的 .Net 功能比 V6 有了很大改进。此外,V6 已于 2011 年 9 月终止生命周期,因此最好现在直接升级到 v7,避免以后升级。
如果您需要 v7 WMQ 客户端(其中包括更新的 .Net 示例和类),请转至IBM MQ 客户端下载页面(需要 IBM ID,但可以免费下载)。
更新 20180810:更改了链接以指向 IBM 的所有 IBM MQ 客户端下载的新页面。