遇到IBM MQ 2013錯誤,找到解決的辦法,轉載自:http://blog.csdn.net/dingwood/article/details/8237575
連接IBM MQ原因碼報2035的錯誤解決辦法
我們的系統使用了ibm mq,用戶用來向國家局上報文件和接收文件,前幾天用戶說上報一直不成功。由於
開發這塊程序的人已經辭職了,我覺定在我的機器部署一套,研究一下。我的思路:
在我的機器上安裝mq,建立兩個隊列,一個用來接收,一個用來發送;在另外一台機器上,發布應用程序,通
過java client向我的機器的隊列發送消息和接收消息。
mq安裝成功,隊列管理器、隊列、通道也都建起來了,用mq自帶的api檢測程序檢測也成功了。
接下來,在另外一台機器上通過程序發送消息,結果就是不行,總是報原因碼是2035的錯誤,折騰了一下
午,我終於明白了故障原因,原來是用戶權限,在網上找到了解決辦法。
通常情況下,MQ客戶端與MQ服務器端通訊時,使用MQ服務器端的服務連接通道在MCAUSER屬性中指定的
用戶作為MQ客戶端連上來時使用的用戶,如果MCAUSER屬性值為空,則使用MQ客戶端所在操作系統使用
的用戶作為MQ客戶端連上來時使用的用戶。通訊時,報2035錯誤,就是由於客戶端與服務器端通訊時所使
用的用戶沒有權限造成的。解決辦法有兩種:
方法1:
假如在服務器端的服務連接通道定義中設置MCAUSER屬性的值為MUSR_MQADMIN:(下例中假設通道定
義名為DT_SERVER_CHL)
ALTER CHANNEL(DT_SERVER_CHL) CHLTYPE(SVRCONN) MCAUSER("MUSR_MQADMIN")
一定要確保MUSR_MQADMIN用戶為mqm組的成員,具體辦法隨MQ 服務器所在的操作系統而定,在此就不
再贅述。
方法2:
若保持MQ服務器端的通道定義的MCAUSER屬性值為缺省值,即為空,則可將MQ客戶端所使用的用戶添加
到MQ服務器所在的操作系統中。
例如,若MQ客戶端使用的用戶為ADMIN,則在MQ服務器端添加用戶ADMIN,並保證此用戶在MQ服務器端的mqm組中,以及有執行隊列管理器上的操作所必需的權限。
這兩種辦法我都試了,都可以。
至此,通過java程序向mq發送消息和接收消息我都調試通過了。