[英]MQ error code 2058 when connecting to queue manager JMS
我正在嘗試使用MQ api連接到隊列管理器,我能夠連接到隊列管理器
MQQueueManager queueManager=new MQQueueManager(qmgrName);
queueManager.accessQueue(qName,MQOO_OUTPUT);
但是當我嘗試使用JMS連接到同一個隊列管理器時,它失敗了2058代碼。不確定我是否遺漏了JMS的內容
MQQueueConnectionFactory qcf=new MQQueueConnectionFactory();
qcf.setQueueManager(qmgrName);
qcf.setPort(1414);
qcf.setHostname("localhost");
qcf.createQueueConnection();
如此處所述 ,MQRC 2058表示無效的隊列管理器名稱或隊列管理器名稱未知。 但正如您所提到的,使用MQ Base Java的綁定模式連接成功,隊列管理器名稱顯示為有效。
更新:
抱歉,我的代碼誤導了您,並認為您正在嘗試使用JMS進行客戶端模式連接。 您無需為綁定模式連接設置主機和端口。
由於未設置傳輸類型,因此使用默認值WMQ_CM_BINDINGS。 建議您驗證隊列管理器名稱。
要連接“BINDINGS”,隊列管理器必須是本地的。 您是否嘗試連接到遠程隊列管理器? 如果是這樣,您需要以“客戶端”身份進行連接。 另外,請檢查以確保qmgr正在偵聽您指定的端口。
您在本地主機上有兩個或更多隊列管理器。 在第一個示例中,您將以綁定模式進行連接,以便按名稱選擇隊列管理器,並獲得正確的隊列管理器。 在第二個示例中,連接是通過客戶端連接進行的,因此由1414上的QMgr監聽接收,這不是您想要的那個,因此連接被拒絕。
請注意,如果兩個QMgrs在1414上都有一個監聽器,則連接將成功或失敗,具體取決於首先啟動的QMgr。 只有一個可以綁定到該端口,因此第一個啟動它可以使用它。 這可能會導致行為看似不一致。
請參閱JMS的IBM MQ類的連接模式,其中建議“要更改IBM MQ類用於JMS的連接選項,請修改連接工廠屬性CONNOPT
。 可接受的值在頁面上提供,但您幾乎總是希望它為標准綁定( MQCNO_STANDARD_BINDING
)設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.