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

Reply via email to