簡體   English   中英

連接到隊列管理器JMS時的MQ錯誤代碼2058

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM