закрытие соединения MQ - PullRequest
       4

закрытие соединения MQ

2 голосов
/ 31 декабря 2010

Добрый день, я написал проект для получения информации о парковочной очереди из IBM MQ, но при попытке закрыть соединение выдает ошибку. Это написано на Java. Под приложением в Event Viewer на машине MQ отображаются две ошибки. Это:

«Программа канала закончилась ненормально. Канальная программа system.def.surconn завершилась ненормально. Посмотрите предыдущие сообщения об ошибках для канальной программы «system.def.surconn» в файлах ошибок, чтобы определить причину сбоя.

В другом сообщении говорится: «Ошибка при получении от хоста rnanaj (10.10.12.34) Произошла ошибка при получении данных от rnanaj (10.10.12.34) через tcp / ip. Это может быть из-за сбоя связи. Код возврата из вызова tcp / ip recv () был 10054 (X’2746 ’). Запишите эти значения. ”

Это должно быть что-то, как я пытаюсь подключить или закрыть соединение, ниже у меня есть мой код для подключения и закрытия, какие-либо идеи ??

Connect:

_logger.info("Start");

        File outputFile = new File(System.getProperty("PROJECT_HOME"), "run/" + this.getClass().getSimpleName() + "." + System.getProperty("qmgr") + ".txt");
        FileUtils.mkdirs(outputFile.getParentFile());

        Connection jmsConn = null;
        Session jmsSession = null;
        QueueBrowser queueBrowser = null;
        BufferedWriter commandsBw = null;
        try {
            // get queue connection
            MQConnectionFactory MQConn = new MQConnectionFactory();
            MQConn.setHostName(System.getProperty("host"));
            MQConn.setPort(Integer.valueOf(System.getProperty("port")));
            MQConn.setQueueManager(System.getProperty("qmgr"));
            MQConn.setChannel("SYSTEM.DEF.SVRCONN");
            MQConn.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);

            jmsConn = (Connection) MQConn.createConnection();
            jmsSession = jmsConn.createSession(false, Session.AUTO_ACKNOWLEDGE);
            Queue jmsQueue = jmsSession.createQueue("PARK");

            // browse thru messages
            queueBrowser = jmsSession.createBrowser(jmsQueue);
            Enumeration msgEnum = queueBrowser.getEnumeration();

            commandsBw = new BufferedWriter(new FileWriter(outputFile));
            //
            String line = "DateTime\tMsgID\tOrigMsgID\tCorrelationID\tComputerName\tSubsystem\tDispatcherName\tProcessor\tJobID\tErrorMsg";
            commandsBw.write(line);
            commandsBw.newLine();

            while (msgEnum.hasMoreElements()) {
                Message message = (Message) msgEnum.nextElement();
                line = dateFormatter.format(new Date(message.getJMSTimestamp()))
                        + "\t" + message.getJMSMessageID()
                        + "\t" + message.getStringProperty("pkd_orig_jms_msg_id")
                        + "\t" + message.getJMSCorrelationID()
                        + "\t" + message.getStringProperty("pkd_computer_name")
                        + "\t" + message.getStringProperty("pkd_subsystem")
                        + "\t" + message.getStringProperty("pkd_dispatcher_name")
                        + "\t" + message.getStringProperty("pkd_processor")
                        + "\t" + message.getStringProperty("pkd_job_id")
                        + "\t" + message.getStringProperty("pkd_sysex_msg");
                _logger.info(line);
                commandsBw.write(line);
                commandsBw.newLine();
            }

        }

Закрыть:

finally {
            IO.close(commandsBw);
            if (queueBrowser != null) { try { queueBrowser.close();} catch (Exception ignore) {}}
            if (jmsSession != null) { try { jmsSession.close();} catch (Exception ignore) {}}
            if (jmsConn != null) { try { jmsConn.stop();} catch (Exception ignore) {}}
        }

1 Ответ

1 голос
/ 31 декабря 2010

Согласно Javadoc для объекта подключения , функция метода stop() - это ...

Временно останавливает соединение доставка входящих сообщений.

Так что stop () на самом деле не разрывает соединение. Вы хотите метод close().

...