Hello, I'm using Apache ActiveMQ 4.1.1 with the default configuration. I noticed that in some cases JMX expoded purge() method does not actually purge messages from the queue.
I'm not yet able to reproduce the situation, so I'll just describe some details. My producer side is standard Java application and consumer side is made using activemq-cpp (2.01, openWire protocol). When cpp consumer fails with some unhandled IOException (for example, when BytesMessage body is empty), message is not removed from the queue (since it's not acknowledged?). However, trying to remove it by using JMX purge() does not remove message from queue. What is more, restarting activemq process also does not help - when the queue is recreated (via session.createQueue()), old messages appear again in the queue. Only deleting queue via JMX removeQueue() helps. Looks like it happens for messages having both PERSISTENT and NON_PERSISTENT delivery modes. I'm wondering to know in which circumstances purge() might not actually purge the queue and why ActiveMQ process restart does not flush the data for NON_PERSISTENT messages? Thanks in advance. Regards, Dziugas Baltrunas