Сбой вызова IBM MQ с кодом compcode ‘2’ (‘MQCC_FAILED’) причина ‘2549’ (‘MQRC_CALL_INTERRUPTED’)

#ibm-mq

#ibm-mq

Вопрос:

Я использую нижеприведенную сеть подключения для подключения mq из java-клиента.

введите описание изображения здесь

Ниже приведена конфигурация MQIPT с использованием

 [global]
CommandPort=1884
RemoteShutDown=true
#MinConnectionThreads=1
#MaxConnectionThreads=300
IdleTimeout=0
ClientAccess=true
QMgrAccess=true
HTTP=true
HTTPChunking=false
Trace=5
ConnectionLog=true
MaxLogFileSize=50
[route]
Name=Route_1
Active=true
ListenerPort=1414
Destination=mq-dmz-************
DestinationPort=********
HTTP=true
HTTPS=true
SSLClient=true
SSLClientProtocols=TLSv1.2
SSLClientKeyRing="path of key ring PFX file"
SSLClientKeyRingPW="path of password file"
HTTPServer=<Http Server name>
HTTPServerPort=443
URIName=<URI name>
SSLClientCAKeyRing="same as SSLClientKeyRing"
SSLClientCAKeyRingPW="same as SSLClientKeyRingPW"
SSLClientCipherSuites=SSL_ECDHE_RSA_WITH_AES_256_GCM_SHA384
SSLServer=true
SSLServerProtocols=TLSv1.2
SSLServerKeyRing="path of key ring PFX file"
SSLServerKeyRingPW="path of password file"
SSLServerCAKeyRing="same as SSLServerKeyRing"
SSLServerCAKeyRingPW="same as SSLServerCAKeyRing"
SSLServerCipherSuites=SSL_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TCPKeepAlive=true
 
  • в обоих случаях возникают следующие проблемы (получение, отправка).
     - Connection not continues work 
    - In case of receive it consistently break  after 7 minutes. MQRC connection broken error coming.
    - In case of receive, if queue is empty it will work till 40 minutes, after that it breaks.
    - '2' ('MQCC_FAILED') reason '2549' ('MQRC_CALL_INTERRUPTED')
    - compcode '2' ('MQCC_FAILED') reason '2009' ('MQRC_CONNECTION_BROKEN') on both case send and receive.
     

Приведенный ниже код, который мы используем для подключения и получения сообщений

 MQQueueConnectionFactory factory = getSSLFactory();
            
                mqConnection = createMQConnection(factory);
                mqConnection.start();
                

                logger.info("<<<<<<<<<created queue connection in receive>>>>>>>>>");
                logger.info("After creating connection");
                session = (MQQueueSession) mqConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
                Destination destination = session.createQueue(LOCAL_QUEUE_RECEIVE);
                consumer = (MQMessageConsumer) session.createConsumer(destination);
                long messageCount = 0;
                long messageNotReceived = 0;
                consumeMessages(consumer, messageCount, messageNotReceived);
 

Метод consumeMessages . внутри этого метода я тестировал с consumer.receive() также с таймаутом.

 
private void consumeMessages(MQMessageConsumer consumer, long messageCount, long messageNotReceived)
                throws JMSException {
            while (true) {
                JMSMessage message = (JMSMessage) consumer.receiveNoWait();
                TextMessage txt_msg = (TextMessage) message;
                if (message == null) {
                    messageNotReceived  ;
                    logger.info("None of the message received. waiting for messages");
                } else {
                    messageCount  ;
                    logger.info("Received message:"   txt_msg.getText());

                }
                logger.info("messageNotReceived count : "   messageNotReceived   " messageCount count : "
                          messageCount);

            }
        }
 

Закрытие соединения в блоке finally.

Я хочу, чтобы потребитель должен был постоянно работать. Однако мы будем обрабатывать сетевую ошибку, но в настоящее время она очень часто выходит из строя.

Пожалуйста, помогите нам. Пожалуйста, укажите нам, где мы должны исследовать эту проблему: на стороне клиента mq, на стороне клиента mqipt, на сервере mq или брандмауэре.

между mqipt используется брандмауэр.

Комментарии:

1. иногда сброс соединения также происходит в журналах mqipt на стороне клиента.

2. Какое значение HBINT установлено на SVRCONN канале? Установлен ли для брандмауэра тайм-аут простоя? Убедитесь HBINT , что время ожидания меньше любого тайм-аута на брандмауэре.

3. Спасибо за информацию, я проверю то же самое и свяжусь с вами. @JoshMc

4. @JoshMc Я проанализировал, что HBINT меньше, чем время ожидания брандмауэра. Все еще разрыв соединения. После анализа дампа TCP мы обнаружили, что один из источников инициирует запрос FIN для завершения соединения. Не могли бы вы предложить

5. Каково было значение HBINT и время ожидания брандмауэра? Какие версии классов IBM MQ для JMS jars, MQIPT, диспетчера очередей.