从IBM MQ使用者问题

时间:2018-01-11 15:57:51

标签: java jms ibm-mq

应用程序正在连接到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);

但不幸的是,这也没有用。

0 个答案:

没有答案