Sometimes, the messages are not delivered immediately to durable subscribers
We are using AMQ version 5.14.0 and we have observed that sometimes, the messages don't get delivered from the topics to active durable subscribers (Android app connected via MQTT). I observed following log when this happened in our production server :
Transport Connection to: tcp://x.y.z.a:2686 failed: java.io.IOException: Connection timed out | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ NIO Worker
Unfortunately, since this is a production server, I can't stop the same to change the log level so that we can get more information about this. We have disabled JMX in production; so can't use the admin console to check what could be the problem.
The durable subscriber is configured with keep-alive as 2 minutes and on the AMQ broker, the mqtt+nio transport connector is configured with wireFormat.maxInactivityDuration=180000. Essentially, the MQTT connection to the transport connector would not become inactive .
If the connection is broken for some reason, the connectionLost() method of the durable subscriber should be invoked, but logs indicate that the connection is still fine.
If I re-open the app (which results in re-establishing the connection), the durable subscribers get the message immediately.