Die IBM MQ-Sitzung wird getrennt

Oct 09 2020

Ich erstelle einen MQ-Listener wie diesen und er funktioniert einwandfrei, aber nach Minuten oder Stunden wird die Verbindung mit dieser Ausnahme getrennt. Ich kontrolliere den Server nicht. Dies erfolgt über eine dedizierte Schaltung, nicht über das Internet. Ich bezweifle, dass es sich um ein Netzwerkproblem handelt. Andere Dienste werden ohne Probleme auf derselben Schaltung ausgeführt.

MQQueueConnectionFactory cf = new MQQueueConnectionFactory();
QueueConnection qc;
Queue queue;
QueueSession queueSession;
QueueReceiver qr;

public void init() throws JMSException, IOException {
    cf.setQueueManager(" ");
    cf.setCCDTURL(Path.of(getCcdt()).toUri().toURL());
    cf.setSSLPeerName(getSslPeerName());
    qc = cf.createQueueConnection();
    qc.setExceptionListener(new ExceptionListener() {
        @Override
        public void onException(JMSException exception) {
            log.error(exception);
        }
    });
    queue = new MQQueue(cp.getMqQueue());
    queueSession = qc.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    qr = queueSession.createReceiver(queue);
    qr.setMessageListener(this);
    qc.start();
}

Ausnahme:

com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ1107: A problem with this connection has occurred.
    at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:595) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:215) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:217) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:273) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.msg.client.wmq.internal.WMQAsyncConsumerShadow.consumer(WMQAsyncConsumerShadow.java:686) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.mq.jmqi.remote.impl.RemoteProxyQueue.callConsumer(RemoteProxyQueue.java:3755) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.mq.jmqi.remote.impl.RemoteProxyQueue.processEvent(RemoteProxyQueue.java:4824) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.mq.jmqi.remote.impl.RemoteProxyQueue.driveConsumer(RemoteProxyQueue.java:4645) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.mq.jmqi.remote.impl.RemoteProxyQueue.deliverMsgs(RemoteProxyQueue.java:5240) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.deliverMsgsReconnectable(RemoteDispatchThread.java:557) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.deliverMsgs(RemoteDispatchThread.java:531) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.run(RemoteDispatchThread.java:305) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.runTask(WorkQueueItem.java:319) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.msg.client.commonservices.workqueue.SimpleWorkQueueItem.runItem(SimpleWorkQueueItem.java:99) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.run(WorkQueueItem.java:343) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.msg.client.commonservices.workqueue.WorkQueueManager.runWorkQueueItem(WorkQueueManager.java:312) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
    at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$ThreadPoolWorker.run(WorkQueueManagerImplementation.java:1227) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]
Caused by: com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2009' ('MQRC_CONNECTION_BROKEN').
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:203) ~[com.ibm.mq.allclient-9.2.0.0.jar:9.2.0.0 - p920-L200710.DE]

grep -C 0 -i -a etHeartbeatInterval mq.log

[2:30:37.720.09]  00000065  @16c85cc4  c.i.mq.exits.MQCD                        ----+----+----+----+----  d  setHeartbeatInterval(int) setter [10(0xa)]
--
[2:30:37.721.0X]  00000065  @71ff40ae  c.i.mq.exits.MQCD                        ----+----+----+----+---  d  setHeartbeatInterval(int) setter [10(0xa)]
--
[2:30:37.795.1J]  00000065  @71ff40ae  c.i.mq.exits.MQCD                        ----+----+----+----+----  d  getHeartbeatInterval() getter [10(0xa)]
[2:30:37.795.1K]  00000065  @7b481be3  c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+----  {  setHeartbeatInterval(int,boolean) [10(0xa)] [false]
[2:30:37.795.1L]  00000065  @7b481be3  c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+----  }  setHeartbeatInterval(int,boolean)
--
[2:30:37.807.0N]  00000065  @43212202  c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+----  {  getHeartbeatInterval(boolean) [true]
[2:30:37.807.0O]  00000065  @43212202  c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+----  }  getHeartbeatInterval(boolean) returns [300(0x12c)] Integer
[2:30:37.807.0P]  00000065  @71ff40ae  c.i.mq.exits.MQCD                        ----+----+----+----+----  d  getHeartbeatInterval() getter [10(0xa)]
[2:30:37.807.0Q]  00000065  @71ff40ae  c.i.mq.exits.MQCD                        ----+----+----+----+----  d  setHeartbeatInterval(int) setter [300(0x12c)]
--
[2:30:37.811.01]  00000065  @71ff40ae  c.i.mq.exits.MQCD                        ----+----+----+----+----  d  getHeartbeatInterval() getter [300(0x12c)]
--
[2:30:37.811.03]  00000065  @a5146c3   c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+----  {  setHeartbeatInterval(int,boolean) [300(0x12c)] [true]
--
[2:30:37.811.05]  00000065  @a5146c3   c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+----  }  setHeartbeatInterval(int,boolean)
--
[2:30:37.817.10]  00000067  @71ff40ae  c.i.mq.exits.MQCD                        ----+-  d  getHeartbeatInterval() getter [300(0x12c)]
--
[2:30:37.826.0F]  00000065  @71ff40ae  c.i.mq.exits.MQCD                        ----+----+----+----+----  d  getHeartbeatInterval() getter [300(0x12c)]
[2:30:37.826.0G]  00000065  @38eff414  c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+----  {  setHeartbeatInterval(int,boolean) [300(0x12c)] [true]
[2:30:37.826.0H]  00000065  @38eff414  c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+----  }  setHeartbeatInterval(int,boolean)
--
[2:30:37.838.0X]  00000065  @71ff40ae  c.i.mq.exits.MQCD                        ----+----+----+----+----  d  getHeartbeatInterval() getter [300(0x12c)]
[2:30:37.838.0Y]  00000065  @1bb7bbb4  c.i.m.j.remote.impl.RemoteTCPConnection  ----+----+----+----+----  {  protocolSetHeartbeatInterval(int) [300(0x12c)]
[2:30:37.838.0Z]  00000065  @1bb7bbb4  c.i.m.j.remote.impl.RemoteTCPConnection  ----+----+----+----+----  }  protocolSetHeartbeatInterval(int)
--
[2:30:37.948.1A]  00000065  @22b76f8e  c.i.mq.exits.MQCD                        ----+----+----+----  d  setHeartbeatInterval(int) setter [10(0xa)]
--
[2:30:37.957.0C]  00000065  @716fc5e   c.i.mq.exits.MQCD                        ----+----+----+----+---  d  setHeartbeatInterval(int) setter [10(0xa)]
--
[2:30:37.958.1T]  00000065  @4c4e13bb  c.i.mq.exits.MQCD                        ----+----+----+----+--  d  setHeartbeatInterval(int) setter [10(0xa)]
--
[2:30:38.039.0K]  00000065  @4c4e13bb  c.i.mq.exits.MQCD                        ----+----+----+----+---  d  getHeartbeatInterval() getter [10(0xa)]
[2:30:38.039.0L]  00000065  @1cf5776d  c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+---  {  setHeartbeatInterval(int,boolean) [10(0xa)] [false]
[2:30:38.039.0M]  00000065  @1cf5776d  c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+---  }  setHeartbeatInterval(int,boolean)
--
[2:30:38.052.0O]  00000065  @3ed71710  c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+---  {  getHeartbeatInterval(boolean) [true]
[2:30:38.052.0P]  00000065  @3ed71710  c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+---  }  getHeartbeatInterval(boolean) returns [300(0x12c)] Integer
[2:30:38.052.0Q]  00000065  @4c4e13bb  c.i.mq.exits.MQCD                        ----+----+----+----+---  d  getHeartbeatInterval() getter [10(0xa)]
[2:30:38.052.0R]  00000065  @4c4e13bb  c.i.mq.exits.MQCD                        ----+----+----+----+---  d  setHeartbeatInterval(int) setter [300(0x12c)]
--
[2:30:38.056.02]  00000065  @4c4e13bb  c.i.mq.exits.MQCD                        ----+----+----+----+---  d  getHeartbeatInterval() getter [300(0x12c)]
[2:30:38.056.03]  00000065  @218f5897  c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+---  {  setHeartbeatInterval(int,boolean) [300(0x12c)] [true]
[2:30:38.056.04]  00000065  @218f5897  c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+---  }  setHeartbeatInterval(int,boolean)
--
[2:30:38.061.00]  00000069  @4c4e13bb  c.i.mq.exits.MQCD                        ----+-  d  getHeartbeatInterval() getter [300(0x12c)]
--
[2:30:38.072.0I]  00000065  @4c4e13bb  c.i.mq.exits.MQCD                        ----+----+----+----+---  d  getHeartbeatInterval() getter [300(0x12c)]
[2:30:38.072.0J]  00000065  @5d299189  c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+---  {  setHeartbeatInterval(int,boolean) [300(0x12c)] [true]
[2:30:38.072.0K]  00000065  @5d299189  c.i.m.j.remote.rfp.RfpID                 ----+----+----+----+---  }  setHeartbeatInterval(int,boolean)
--
[2:30:38.085.02]  00000065  @4c4e13bb  c.i.mq.exits.MQCD                        ----+----+----+----+---  d  getHeartbeatInterval() getter [300(0x12c)]
[2:30:38.085.03]  00000065  @51b68e6a  c.i.m.j.remote.impl.RemoteTCPConnection  ----+----+----+----+---  {  protocolSetHeartbeatInterval(int) [300(0x12c)]
--
[2:30:38.085.05]  00000065  @51b68e6a  c.i.m.j.remote.impl.RemoteTCPConnection  ----+----+----+----+---  }  protocolSetHeartbeatInterval(int)

Verbindungsabbrüche treten entweder nach 90 Minuten oder nach ca. 50 Minuten auf:

15:28 start
16:59 restart (90 min)
17:55 restart (55 min)
18:51 restart (54 min)
19:47 restart (56 min)

3:06 start
4:47 restart (90 min)
5:38 restart (50 min)
6:34 restart (56 min
7:25 restart (50 min)
8:21 restart (55 min)
9:57 restart (95 min)
10:48 restart (50 min)
11:39 restart (51 min)
12:30 restart (51 min)
13:26 restart (56 min)
14:22 restart (56 min)
15:13 restart (51 min)

Die Paketerfassung sieht so aus. Siehe # 162, ich habe ein TLS-Paket gesendet, dann 9 erneut übertragen und dann 60 Sekunden nach dem Senden von # 162 die Verbindung getrennt.

192.168.77.102 = me (MQ JMS client)
192.168.77.1 = router(next hop)
160.43.166.189 = MQ server

Antworten

Andrew Oct 22 2020 at 20:39

Der Dienstanbieter musste HBINT (30) einstellen, um das Problem zu beheben. Sehr seltsam, dass sie das nicht schon richtig gehabt hätten, wenn man bedenkt, dass sie viele dieser Sitzungen eingerichtet haben.