I also got these messages when I had a network connector setup. The setup seems similar to OP, where we had a message configured to be sent via a staticallyIncludedDestinations block, and it ended up in the DLQ with "TopicSubDiscard". Here's a full dump of one of the messages that ended up in the DLQ:
<http://activemq.2283324.n4.nabble.com/file/t378787/Screenshot_from_2017-11-17_12-05-12.png> As you can see, message expiration was set to 0. So it seems like there was something else that casued it to expire. I noticed in the source code that there's another way for this error to occur: https://github.com/apache/activemq/blob/08aa5118ffcd8dfc4ec813d799a61ef1ee4421d1/activemq-broker/src/main/java/org/apache/activemq/broker/region/TopicSubscription.java#L189 Seems like some sort of discarding of old messages when consumption is slow? Why does this happen to messages sent to a topic? Is there some sort of internal queue that's created for delivering messages over a network connector, and maybe this queue filled up somehow? By the way, we also got a lot of these in the logs of the activemq with the network connector where the message originated from and where it ended up in the DLQ: 2017-11-17 07:04:21,750 | ERROR | Checkpoint failed | org.apache.activemq.store.kahadb.MessageDatabase | ActiveMQ Journal Checkpoint Worker java.lang.OutOfMemoryError: Java heap space 2017-11-17 07:04:21,750 | INFO | Ignoring no space left exception, java.io.IOException: Java heap space | org.apache.activemq.util.DefaultIOExceptionHandler | ActiveMQ Journal Checkpoint Worker java.io.IOException: Java heap space at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:40)[activemq-client-5.14.4.jar:5.14.4] at org.apache.activemq.store.kahadb.MessageDatabase$CheckpointRunner.run(MessageDatabase.java:433)[activemq-kahadb-store-5.14.4.jar:5.14.4] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_144] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)[:1.8.0_144] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)[:1.8.0_144] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)[:1.8.0_144] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)[:1.8.0_144] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)[:1.8.0_144] at java.lang.Thread.run(Thread.java:748)[:1.8.0_144] -- Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-User-f2341805.html