如何创建qmgr别名

时间:2017-02-24 12:19:19

标签: linux ibm-mq

我有一个虚拟ip,它指向分别有qmgrs qm1和qm2的2台服务器。 我需要一个qmgr别名来将它提供给另一个应用程序,以便他们可以使用qmgr别名调用虚拟ip,并且qmgr别名应该相应地指向特定服务器的qmgr。

我做了什么:
我创建了qmgr别名,如下所示 在带有QM1的服务器1中:

Define qremote(QMALIAS)  rname('')  rqmname(QM1)  xmitq(x)

在server2中:

Define qremote(QMALIAS)  rname('')  rqmname(QM2)  xmitq(x)

当我尝试访问virtualip和QMALIAS时,我从另一个应用程序收到2059错误。

我使用IBM MQ。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

您说应用程序出现2059错误,我认为您的意思是2058MQRC_Q_MGR_NAME_ERROR)。

在QMALIAS的QREMOTE定义中,您应该将XMITQ留空:

DEFINE QREMOTE(QMALIAS) RNAME('') RQMNAME(QM1) XMITQ('')
DEFINE QREMOTE(QMALIAS) RNAME('') RQMNAME(QM2) XMITQ('')

在客户端,您有两种选择来完成这项工作:

  1. 不要在MQCONN调用上指定队列管理器名称,要么将其留空(NULL),要么只留空格。
  2. 在MQCONN呼叫的队列管理器名称中放置*,例如:*QMALIAS或仅*
  3. 这将导致客户端不检查RQMNAME是否与MQCONN调用中的名称匹配,然后它将不会生成2058MQRC_Q_MGR_NAME_ERROR)。

    另请注意,如果您在MQOPEN调用中将BASE QMNAME留空,则不需要客户端应用程序的QMALIAS条目。如果您还需要支持通过VIP连接的远程队列管理器,那么您将需要QMALIAS用于​​此目的。