1

我的问题是我有两台服务器,一台正在运行 MQ 服务器,一台正在运行的服务将从前者获取 MQ 消息。不管听起来多么容易,我不能让后者连接到第一台服务器上的队列管理器。我尝试了以下操作:

  1. 从第二台服务器 ping 第一台服务器:它工作得很好
  2. 从第二台服务器远程登录第一台服务器,使用用于连接第一台服务器上的 MQ 管理器的特定端口(1416):它也可以找到
  3. 现在到了奇怪的部分:我在第二台服务器上创建了一个队列管理器(那台机器上还运行着一个 MQ 服务器),与我要连接的第一台服务器上的 MQ 管理器同名,然后我可以只连接到这个队列,虽然在 ChannelInfo 中我准确地指定了第一个服务器的 IP 地址,而不是第二个。
  4. 删除第二台服务器上的 MQ 管理器后,它只给我错误 2058:MQRC_Q_MGR_NAME_ERROR。我检查了第一台服务器上的 MQ Mananer 名称,它是正确的。
  5. 可以从其他服务器连接到第一台服务器的 MQ 管理器。

我怀疑它是我问题的根源的更多信息:第一台服务器运行 Windows 32 位,第二台服务器运行 Windows 64 位。此外,第二个是全新安装的,所以我认为它可能存在某些权限问题。然而,到目前为止,四处搜索并没有帮助我。

如果有人能对我的问题有所了解,我真的很感激。它使我的项目已经逾期一周了。

提前致谢!

4

1 回答 1

0

不,错误不是由于 32/64 位 Windows 平台造成的。

在 32 位和 64 位 Windows 平台上,队列管理器作为 32 位进程运行。

所以这不是问题。

在第一台服务器上验证的明显事项:

  1. 您是否为队列管理器定义了一个侦听器来侦听端口 1416?如果是,它正在运行吗?

  2. 您是否在队列管理器上定义了服务器连接 (SVRCONN) 通道?

  3. 您的服务(在第二台服务器上运行)如何尝试连接到队列管理器?是绑定还是客户端模式?在绑定模式下,应用程序只能连接到同一台机器上运行的队列管理器。在客户端模式下,应用程序可以连接到运行在同一台机器或不同机器上的队列管理器。您的服务必须使用客户端模式连接来连接到远程机器。

要连接到远程队列管理器,应用程序必须指定主机名、端口和通道名。

于 2013-05-07T09:43:30.197 回答