应用程序正在连接到IBM MQ队列,并且附加了一个使用者。但是最近,我们遇到了编写代码时没有想到的情况/故障转移。最近,由于某种原因,队列管理器因故而退出了几分钟,当它被带回时,我们的应用程序的消费者已经脱离了队列。
只有将其附加回来的方法是再次手动重启应用程序。代码段如下所示: -
protected void initalizeConnection() {
try {
MQQueueConnectionFactory connectionFactory =
new MQQueueConnectionFactory();
connectionFactory.setHostName(System.getProperty(IBMMQ_HOSTNAME));
int port = Integer.parseInt(System.getProperty(IBMMQ_PORT));
connectionFactory.setPort(port);
connectionFactory
.setQueueManager(System.getProperty(IBMMQ_QUEUEMANAGER));
connectionFactory.setChannel(System.getProperty(IBMMQ_CHANNEL));
// For a connection to a queue manager in client mode
connectionFactory.setTransportType(CommonConstants.WMQ_CM_CLIENT);
QueueConnection connection =
connectionFactory.createQueueConnection();
connection.start();
Session session =
connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination =
session.createQueue(IBM_MQ_SUBC_DESTINATION_NAME_COMPLETE_LOAD);
MessageConsumer consumer = session.createConsumer(destination);
consumer.setMessageListener(closedLoadListener);
} catch (JMSException jmsException) {
LOG.error("Error in registering consumer with IBM MQ",
jmsException);
}
}
问题: - 我想知道是否有任何配置设置 我可以把它放在连接级别或其他方式 消费者级别启用了自动重新连接选项吗?
注意: - 我也尝试过添加以下代码
connectionFactory.setClientReconnectOptions(WMQConstants.WMQ_CLIENT_RECONNECT);
connectionFactory.setClientReconnectTimeout(1200);
但不幸的是,这也没有用。