我有一个虚拟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错误,我想你是指一个2058MQRC_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调用中的名称匹配,然后它将不会生成2058MQRC_Q_MGR_NAME_ERROR)。
还要注意,如果在mqopen调用中保留基本qmname为空,则客户端应用程序不需要qmalias条目。如果您还需要支持通过vip连接的远程队列管理器,那么您将为此需要qmalias。

关于linux - 如何创建qmgr别名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42438479/

10-10 02:39