我有一个虚拟IP,它分别指向具有qmgrs qm1和qm2的两个服务器。
我需要一个qmgr别名将其提供给另一个应用程序,以便它们可以使用qmgr别名调用虚拟IP,qmgr别名应该相应地指向特定服务器的qmgr。
我所做的:
我已经创建了qmgr别名,如下所示。
在带有QM1的服务器1中:
Define qremote(QMALIAS) rname('') rqmname(QM1) xmitq(x)
在服务器2中:
Define qremote(QMALIAS) rname('') rqmname(QM2) xmitq(x)
当另一个应用程序尝试访问virtualip和qmalias时,我从它那里得到一个2059错误。
我使用IBM MQ。
有人能帮忙吗?
最佳答案
你说你从应用程序中得到一个2059
错误,我想你是指一个2058
(MQRC_Q_MGR_NAME_ERROR
)。
在qmlaias的qremote定义中,应将xmitq留空:
DEFINE QREMOTE(QMALIAS) RNAME('') RQMNAME(QM1) XMITQ('')
DEFINE QREMOTE(QMALIAS) RNAME('') RQMNAME(QM2) XMITQ('')
在客户端,您有两个选择:
不要在mqconn调用上指定队列管理器名称,请将其保留为空(null)或仅保留空格。
在mqconn调用的队列管理器名称中放置一个
*
,例如:*QMALIAS
或简单地*
。这将导致客户端不检查rqmname是否与mqconn调用中的名称匹配,然后它将不会生成
2058
(MQRC_Q_MGR_NAME_ERROR
)。还要注意,如果在mqopen调用中保留基本qmname为空,则客户端应用程序不需要qmalias条目。如果您还需要支持通过vip连接的远程队列管理器,那么您将为此需要qmalias。
关于linux - 如何创建qmgr别名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42438479/