症狀
JMSCMQ0001:使用compcode'2'('MQCC_FAILED')原因'2035'('MQRC_NOT_AUTHORIZED')的WebSphere MQ調用失敗
【小技巧:如果想知道MQ返回的碼是什么意思,可以在主機上執行 ‘mqsc 2035‘,查看數字背后的真正含義,數據可以隨便換】
原因
MQ連接被拒絕的兩個最可能的原因如下(IBM網站上抄來的):
- 在客戶機連接上從應用程序服務器傳遞到MQ的用戶標識在運行MQ隊列管理器的服務器上未知,未被授權連接到MQ或超過12個字符並已被截斷。
- 通過客戶端連接從應用程序服務器傳遞到MQ的用戶標識符是承載MQ隊列管理器的服務器上的“mqm”組的成員,並且存在阻止對隊列管理器的管理訪問的通道認證記錄(CHLAUTH)。WebSphere MQ 在WebSphere MQ V6.1 及更高版本中默認配置CHLAUTH記錄,阻止所有MQ管理員作為客戶機連接到隊列管理器。在這種情況下可能會看到MQ錯誤日志中的以下錯誤:AMQ9777:通道被阻止
診斷問題
咋解決呢?
針對原因1,可以將應用傳遞給MQ隊列管理器的用戶名加入MQ所在機器上的有權限的用戶組里,Linux默認一般是mqm組。用戶名要是長了,自行解決。
針對原因2,我一般用下面兩條命令,直接關閉通道權限認證:
alter qmgr chlauth(disabled)
refresh security type(connauth)