【发布时间】:2020-04-18 21:08:00
【问题描述】:
在将一些数据放入回复队列时,我遇到了错误。我的应用程序流程是我有一个 MQ 侦听器(Spring Boot Container),它一直在侦听 REQ 队列并处理在 REQ 队列上接收到的数据,最后将处理后的数据放在 REPLY 队列中。
在我的情况下,在一定数量的请求和回复流之后在 REP 队列上发送数据时出现问题,我确信当它达到 MAX HANDLE 计数时,此问题开始出现。对于临时修复,现在我正在重新启动我的 MQ 侦听器容器。
有人可以帮助我在哪里检查 MAXHANDS 计数(我假设它是在 MQ 端配置的),有没有办法在问题被重现后检查多少计数?
注意:我正在使用 IBMMQ,并且所有队列基础架构都由 MQ 团队管理。
错误详情:
原因:com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') 原因 '2017' ('MQRC_HANDLE_NOT_AVAILABLE')。
非常感谢您的即时帮助。
public class MessageHandlerImplRCC implements SessionAwareMessageListener {
@Override public void onMessage(Message message, Session session) {
TextMessage imbMqReplyMessage = session.createTextMessage();
imbMqReplyMessage.setJMSMessageID(message.getJMSMessageID());
imbMqReplyMessage.setJMSCorrelationID(message.getJMSMessageID());
imbMqReplyMessage.setText(dlmToDemiMappedString);
MessageProducer messageProducerIBM = session.createProducer(message.getJMSReplyTo());
messageProducerIBM.send(imbMqReplyMessage);
message.acknowledge();
}
}
【问题讨论】:
-
显示您的代码。您是否使用事务处理会话?如果是这样,你承诺吗?这有过效果吗?
-
是的。它已经持续工作了一段时间,突然开始出现上述错误(可能是当它达到 MAXHANDLES 时)。如果我重新启动我的侦听器容器(Spring Boot Container),它再次开始正常运行'public class MessageHandlerImplRCC implements SessionAwareMessageListener { @Override public void onMessage(Message message, Session session) { MessageProducer messageProducerIBM = session.createProducer(message.getJMSReplyTo()); messageProducerIBM.send(imbMqReplyMessage); message.acknowledge();'
-
公共类 MessageHandlerImplRCC 实现 SessionAwareMessageListener { @Override public void onMessage(Message message, Session session) { TextMessage imbMqReplyMessage = session.createTextMessage(); imbMqReplyMessage.setJMSMessageID(message.getJMSMessageID()); imbMqReplyMessage.setJMSCorrelationID(message.getJMSMessageID()); imbMqReplyMessage.setText(dlmToDemiMappedString); MessageProducer messageProducerIBM = session.createProducer(message.getJMSReplyTo()); messageProducerIBM.send(imbMqReplyMessage); message.acknowledge();}}
-
我已将您的代码添加到问题中 - 如果您将其放在那里而不是在评论中,则更容易阅读。请检查我没有误报。