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

Joe*_*moe 6 c# ibm-mq

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

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)

我在两种情况下都会出错.

有人可以提供建议吗?

Joe*_*moe 5

这就是我让它工作的方式:

 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)


T.R*_*Rob 2

也许这个示例代码会有所帮助。

我链接到 V7 文档。理想情况下,您将使用 V7 客户端并与 V7 服务器通信,因为这些中的 .Net 功能比 V6 有了很大改进。此外,V6 已于 2011 年 9 月终止生命周期,因此最好现在直接升级到 v7,避免以后升级。

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

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