Thank you Tim, In the Receiver Setup code, note that the beforeStep() method is annotated with @BeforeStep. I think this means that the receiver is being set up twice, and probably with a prefetch optimization. This is validated because the log shows TWO subscriptions. Not being a heavy JMS user, I was under the mistaken impression that one was for the receiver but the other was for the sender.
@Override @BeforeStep public void beforeStep(StepExecution stepExecution) { this.stepExecution = stepExecution; this.setJobExecution(stepExecution.getJobExecution()); After removing the @BeforeStep annotation, the log shows only one subscription DEBUG org.apache.activemq.broker.region.Queue - queue://Workorders via SQL.408, subscriptions=1, memory=0%, size=1, pending=0 toPageIn: 0, Inflight: 1, pagedInMessages.size 1, pagedInPendingDispatch.size 0, enqueueCount: 1370, dequeueCount: 1369, memUsage:1024 -- View this message in context: http://activemq.2283324.n4.nabble.com/ActiveMQ-JMS-losing-messages-what-am-I-missing-tp4709127p4709200.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.