首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在前几条消息后尝试连接到MQ管理器时出现MQ错误(原因2594)

在前几条消息后尝试连接到MQ管理器时出现MQ错误(原因2594)
EN

Stack Overflow用户
提问于 2020-09-22 03:16:04
回答 1查看 239关注 0票数 0

我正在升级一个独立的Java应用程序,它使用IBM MQ将消息发送到本地Websphere 8.5服务器。现有的应用程序对MQ代码使用了一堆不同的jars (mq、mqbind、mqjms、connector-api、jms)。

对于新的版本,我看到现在有一个包罗万象的"allclient“MQ (https://mvnrepository.com/artifact/com.ibm.mq/com.ibm.mq.allclient/9.2.0.0),所以我决定使用它。

对于前几条消息,它似乎工作得很好,但在发送4-5条消息后,所有后续消息都将失败,并显示代码2594 (https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.1.0/com.ibm.mq.tro.doc/q120510_.htm):

代码语言:javascript
复制
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2594;AMQ9204: Connection to host 'localhost(5558)' rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2594;AMQ9503: Channel negotiation failed. [3=WAS.JMS.SVRCONN     ]],3=localhost(5558),5=RemoteConnection.initSess]
    at com.ibm.mq.jmqi.remote.api.RemoteFAP$Connector.jmqiConnect(RemoteFAP.java:13588)
    at com.ibm.mq.jmqi.remote.api.RemoteFAP$Connector.access$100(RemoteFAP.java:13125)
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1430)
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1389)
    at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.jmqiConnect(InterceptedJmqiImpl.java:377)
    at com.ibm.mq.ese.jmqi.ESEJMQI.jmqiConnect(ESEJMQI.java:562)
    at com.ibm.mq.MQSESSION.MQCONNX_j(MQSESSION.java:916)
    at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:240)

在服务器端,我在控制台中获得了以下内容:

代码语言:javascript
复制
CWSIC3712E: A WebSphere MQ client, previously connected from host 127.0.0.1:58963 on transport chain InboundBasicMQLink, has been disconnected because of exception java.io.IOException: Async IO operation failed (1), reason: RC: 55  The specified network resource or device is no longer available.

发生此错误后,任何后续发送消息的尝试都将失败,并返回相同的错误。我必须重新启动应用程序,在这一点上,相同的事情重复:在失败开始之前,首先发送4-5条消息。如果我在不更改代码的情况下切换回使用旧的JAR,我就能够发送不限数量的消息而不会出现任何问题。

原因代码让我感到困惑(“MQCONN或MQCONNX调用是从客户端连接的应用程序发出的,但它未能与队列管理器就密码保护算法达成一致。”)因为如果这真的是一个密码问题,为什么前两个消息发送时没有问题?关闭/断开队列/管理器似乎不是问题,因为我会在每次发送和can断点/println之间等待几秒钟,并在下次发送之前查看它们是否每次都被关闭。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2020-09-30 02:27:06

我找到了这个问题的部分解决方法:

在Java代码中,对于MQMessage对象,我们声明了一个"replyToQueueName“。如果我删除setter,问题似乎就消失了(我们可以发送任意多消息而不会出错)。

我不确定为什么在这种特殊的情况下,这似乎是可行的。发生在代码中比replyToQueueName设置器高得多的MQQueueManager声明上的失败。再加上这个bug只在发送了4-5条消息后才出现,这似乎表明有些东西没有被正确地“关闭”,但据我所知,没有办法“关闭”一条消息,我们已经关闭/断开了管理器和队列的连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63998640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档