Discussion:
IBM-MQ Connector fails to connect after sitting idle in iterator mode.
(too old to reply)
bill valvik
2020-11-06 19:22:42 UTC
Permalink
I have an AL with an IBM-MQ connector being used as an iterator to pickup message from our new V9MQ. Any pending messages sitting there when the AL starts processes perfectly however when the iterator has run out of pending messages it sits waiting for the next message. Most likely the sitting last for more that 15 minutes and once it detects another message in the queue it fails to connect. Honestly I am not even sure it knows there is a pending message but it somehow does.

Anyway to keep the connection live or possibly to stop and restart the connector while waiting?

Here is some log details on the failure.

2020-11-06 08:56:45,643 INFO [3797f3e60614] - CTGDIS272I Retrying operation in [IBMMQ_Iter], CTGDIS790I Throwing this exception to tell the AssemblyLine to retry this Connector. The Assem
blyLine will perform the operation of the current Connector again, using the current work object..
2020-11-06 08:56:45,647 INFO [3797f3e60614] - [IBMMQ_Iter] CTGDIS057I Hook before_execute not enabled.
2020-11-06 08:56:45,648 INFO [3797f3e60614] - [IBMMQ_Iter] CTGDIS057I Hook before_getnext not enabled.
2020-11-06 08:56:45,649 INFO [3797f3e60614] - [IBMMQ_Iter] CTGDIS495I handleException , get, com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2002: Failed to get a message from destinat
ion 'HR.UID.ISIM.REQUEST.Q'.
IBM MQ classes for JMS attempted to perform an MQGET; however IBM MQ reported an error.
Use the linked exception to determine the cause of this error.
2020-11-06 08:56:45,650 INFO [3797f3e60614] - [IBMMQ_Iter] CTGDIS350I Hook get_fail [186].
2020-11-06 08:56:45,650 ERROR [3797f3e60614] - HRFeed:IBMMQ_Iter:Iterator Error: error=
2020-11-06 08:56:45,650 INFO [3797f3e60614] - CTGDIS003I *** Start dumping Entry
2020-11-06 08:56:45,651 INFO [3797f3e60614] - Operation: generic
2020-11-06 08:56:45,651 INFO [3797f3e60614] - Entry attributes:
2020-11-06 08:56:45,651 INFO [3797f3e60614] - status (replace): 'fail'
2020-11-06 08:56:45,651 INFO [3797f3e60614] - connectorname (replace): 'IBMMQ_Iter'
2020-11-06 08:56:45,652 INFO [3797f3e60614] - operation (replace): 'get'
2020-11-06 08:56:45,652 INFO [3797f3e60614] - exception (replace): 'com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2002: Failed to get a message from destination 'HR.UID.I
SIM.REQUEST.Q'.
IBM MQ classes for JMS attempted to perform an MQGET; however IBM MQ reported an error.
Use the linked exception to determine the cause of this error.'
2020-11-06 08:56:45,652 INFO [3797f3e60614] - message (replace): 'JMSWMQ2002: Failed to get a message from destination 'HR.UID.ISIM.REQUEST.Q'.'
2020-11-06 08:56:45,653 INFO [3797f3e60614] - class (replace): 'com.ibm.msg.client.jms.DetailedJMSException'
2020-11-06 08:56:45,653 INFO [3797f3e60614] - CTGDIS004I *** Finished dumping Entry
2020-11-06 08:56:45,658 WARN [3797f3e60614] - HRFeed:IBMMQ_Iter:Iterator Error: Sleeping for 30 seconds & retryEntry
2020-11-06 08:56:45,662 ERROR [3797f3e60614] - HRFeed:IBMMQ_Iter:Iterator Error: Stacktrace is com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2002: Failed to get a message from destina
tion 'HR.UID.ISIM.REQUEST.Q'.
IBM MQ classes for JMS attempted to perform an MQGET; however IBM MQ reported an error.
Use the linked exception to determine the cause of this error.
at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:595)
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:215)
at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:222)
at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:156)
at com.ibm.msg.client.wmq.internal.WMQConsumerShadow.getMsg(WMQConsumerShadow.java:1862)
at com.ibm.msg.client.wmq.internal.WMQSyncConsumerShadow.receiveInternal(WMQSyncConsumerShadow.java:230)
at com.ibm.msg.client.wmq.internal.WMQConsumerShadow.receive(WMQConsumerShadow.java:1467)
at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.receive(WMQMessageConsumer.java:674)
at com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receiveInboundMessage(JmsMessageConsumerImpl.java:1073)
at com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receiveNoWait(JmsMessageConsumerImpl.java:748)
at com.ibm.mq.jms.MQMessageConsumer.receiveNoWait(MQMessageConsumer.java:231)
at com.ibm.di.connector.JMSConnector.getNextEntry(JMSConnector.java:451)
at com.ibm.di.server.AssemblyLineComponent.executeOperation(AssemblyLineComponent.java:3373)
at com.ibm.di.server.AssemblyLineComponent.getnext(AssemblyLineComponent.java:932)
at com.ibm.di.server.AssemblyLine.msGetNextIteratorEntry(AssemblyLine.java:3734)
at com.ibm.di.server.AssemblyLine.executeMainStep(AssemblyLine.java:3425)
at com.ibm.di.server.AssemblyLine.executeMainLoop(AssemblyLine.java:3026)
at com.ibm.di.server.AssemblyLine.executeMainLoop(AssemblyLine.java:3009)
at com.ibm.di.server.AssemblyLine.executeAL(AssemblyLine.java:2975)
at com.ibm.di.server.AssemblyLine.run(AssemblyLine.java:1338)
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)
... 18 more
Franzw
2020-11-07 18:28:57 UTC
Permalink
I have an AL with an IBM-MQ connector being used as an iterator to pickup message from our new V9MQ. Any pending messages sitting there when the AL starts processes perfectly however when the iterator has run out of pending messages it sits waiting for the next message. Most likely the sitting last for more that 15 minutes and once it detects another message in the queue it fails to connect. Honestly I am not even sure it knows there is a pending message but it somehow does.
Anyway to keep the connection live or possibly to stop and restart the connector while waiting?
Here is some log details on the failure.
2020-11-06 08:56:45,643 INFO [3797f3e60614] - CTGDIS272I Retrying operation in [IBMMQ_Iter], CTGDIS790I Throwing this exception to tell the AssemblyLine to retry this Connector. The Assem
blyLine will perform the operation of the current Connector again, using the current work object..
2020-11-06 08:56:45,647 INFO [3797f3e60614] - [IBMMQ_Iter] CTGDIS057I Hook before_execute not enabled.
2020-11-06 08:56:45,648 INFO [3797f3e60614] - [IBMMQ_Iter] CTGDIS057I Hook before_getnext not enabled.
2020-11-06 08:56:45,649 INFO [3797f3e60614] - [IBMMQ_Iter] CTGDIS495I handleException , get, com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2002: Failed to get a message from destinat
ion 'HR.UID.ISIM.REQUEST.Q'.
IBM MQ classes for JMS attempted to perform an MQGET; however IBM MQ reported an error.
Use the linked exception to determine the cause of this error.
2020-11-06 08:56:45,650 INFO [3797f3e60614] - [IBMMQ_Iter] CTGDIS350I Hook get_fail [186].
2020-11-06 08:56:45,650 ERROR [3797f3e60614] - HRFeed:IBMMQ_Iter:Iterator Error: error=
2020-11-06 08:56:45,650 INFO [3797f3e60614] - CTGDIS003I *** Start dumping Entry
2020-11-06 08:56:45,651 INFO [3797f3e60614] - Operation: generic
2020-11-06 08:56:45,651 INFO [3797f3e60614] - status (replace): 'fail'
2020-11-06 08:56:45,651 INFO [3797f3e60614] - connectorname (replace): 'IBMMQ_Iter'
2020-11-06 08:56:45,652 INFO [3797f3e60614] - operation (replace): 'get'
2020-11-06 08:56:45,652 INFO [3797f3e60614] - exception (replace): 'com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2002: Failed to get a message from destination 'HR.UID.I
SIM.REQUEST.Q'.
IBM MQ classes for JMS attempted to perform an MQGET; however IBM MQ reported an error.
Use the linked exception to determine the cause of this error.'
2020-11-06 08:56:45,652 INFO [3797f3e60614] - message (replace): 'JMSWMQ2002: Failed to get a message from destination 'HR.UID.ISIM.REQUEST.Q'.'
2020-11-06 08:56:45,653 INFO [3797f3e60614] - class (replace): 'com.ibm.msg.client.jms.DetailedJMSException'
2020-11-06 08:56:45,653 INFO [3797f3e60614] - CTGDIS004I *** Finished dumping Entry
2020-11-06 08:56:45,658 WARN [3797f3e60614] - HRFeed:IBMMQ_Iter:Iterator Error: Sleeping for 30 seconds & retryEntry
2020-11-06 08:56:45,662 ERROR [3797f3e60614] - HRFeed:IBMMQ_Iter:Iterator Error: Stacktrace is com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2002: Failed to get a message from destina
tion 'HR.UID.ISIM.REQUEST.Q'.
IBM MQ classes for JMS attempted to perform an MQGET; however IBM MQ reported an error.
Use the linked exception to determine the cause of this error.
at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:595)
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:215)
at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:222)
at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess(WMQMessageConsumer.java:156)
at com.ibm.msg.client.wmq.internal.WMQConsumerShadow.getMsg(WMQConsumerShadow.java:1862)
at com.ibm.msg.client.wmq.internal.WMQSyncConsumerShadow.receiveInternal(WMQSyncConsumerShadow.java:230)
at com.ibm.msg.client.wmq.internal.WMQConsumerShadow.receive(WMQConsumerShadow.java:1467)
at com.ibm.msg.client.wmq.internal.WMQMessageConsumer.receive(WMQMessageConsumer.java:674)
at com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receiveInboundMessage(JmsMessageConsumerImpl.java:1073)
at com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receiveNoWait(JmsMessageConsumerImpl.java:748)
at com.ibm.mq.jms.MQMessageConsumer.receiveNoWait(MQMessageConsumer.java:231)
at com.ibm.di.connector.JMSConnector.getNextEntry(JMSConnector.java:451)
at com.ibm.di.server.AssemblyLineComponent.executeOperation(AssemblyLineComponent.java:3373)
at com.ibm.di.server.AssemblyLineComponent.getnext(AssemblyLineComponent.java:932)
at com.ibm.di.server.AssemblyLine.msGetNextIteratorEntry(AssemblyLine.java:3734)
at com.ibm.di.server.AssemblyLine.executeMainStep(AssemblyLine.java:3425)
at com.ibm.di.server.AssemblyLine.executeMainLoop(AssemblyLine.java:3026)
at com.ibm.di.server.AssemblyLine.executeMainLoop(AssemblyLine.java:3009)
at com.ibm.di.server.AssemblyLine.executeAL(AssemblyLine.java:2975)
at com.ibm.di.server.AssemblyLine.run(AssemblyLine.java:1338)
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)
... 18 more
The error you are receiving is a network connectivity problem - se this older discussion : https://www.ibm.com/mysupport/s/question/0D50z00005qYWg1/ibm-mq-call-failed-with-compcode-2-mqccfailed-reason-2009?language=en_US
I would guess this is firewall that closes the connection after a while as firewalls do not like persistent connections - but this is only a guess...

HTH

Regards
Franz Wolfhagen

Loading...