2017-02-24 54 views
1

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

我做了什么:
我已经创建了qmgr别名,如下所示。
在服务器1 QM1:

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

在服务器2:

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

我从其他应用程序中的错误2059当它试图访问virtualip和QMALIAS。

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

回答

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或简单地*

这将导致客户端无法检查RQMNAME在MQCONN调用的名称相匹配,然后它会不会产生2058MQRC_Q_MGR_NAME_ERROR)。

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

+0

我将xmitq(x)更正为xmitq('')。我只使用VIP。当另一个应用试图定义一个带有服务器作为vip主机名和xmitq(QMALIAS)的sdr通道并启动通道时,它会抛出AMQ9509:程序无法打开队列管理器对象。 – user862833

+0

@ user862833是否是MQ客户端应用程序连接到在您的QM1和QM2上定义的SVRCONN通道的问题,还是与QM1和QM2有一个SDR通道的远程队列管理器有问题? SDR需要指向XMITQ,错误AMQ9509会指示XMITQ不存在。同样在这种类型的设置中,除非通道只传输非持久性消息,否则您将遇到SEQNUM问题。你能不能更新你的问题,以清楚你想要解决什么问题。 – JoshMc

+0

@ user862833您对此有何评论?一旦你澄清了,我会修改我的答案来解决这个问题。 – JoshMc