2017-02-24 93 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