我有一个虚拟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。 有人可以帮忙吗?
答案 0 :(得分:2)
您说应用程序出现2059
错误,我认为您的意思是2058
(MQRC_Q_MGR_NAME_ERROR
)。
在QMALIAS的QREMOTE定义中,您应该将XMITQ留空:
DEFINE QREMOTE(QMALIAS) RNAME('') RQMNAME(QM1) XMITQ('')
DEFINE QREMOTE(QMALIAS) RNAME('') RQMNAME(QM2) XMITQ('')
在客户端,您有两种选择来完成这项工作:
*
,例如:*QMALIAS
或仅*
。这将导致客户端不检查RQMNAME是否与MQCONN调用中的名称匹配,然后它将不会生成2058
(MQRC_Q_MGR_NAME_ERROR
)。
另请注意,如果您在MQOPEN调用中将BASE QMNAME留空,则不需要客户端应用程序的QMALIAS条目。如果您还需要支持通过VIP连接的远程队列管理器,那么您将需要QMALIAS用于此目的。