activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dziugas Baltrunas" <dziu...@baltrunas.lt>
Subject Re: When QueueView.purge() does not actually purge?
Date Fri, 24 Aug 2007 12:07:49 GMT
Hi,

any thoughts on this issue?

What I've also faced is that especially with activemq-cpp, when the
process is killed abnormally (that is, without closing connection to
broker), ActiveMQ broker keeps connection as active (visible via JMX,
org.apache.activemq->localhost->Connection->openwire) and the
ConsumerCount for the queues now already dead connection was listening
to also does not decrease.

So the questions narrow to the following:

1. Why killing activemq-cpp process abnormally does not flush the
connection from the broker and dead connection is visible as "active"
from within JMX?

2. Why non-persistent messages keep staying in the queue when
activemq-cpp async consumer with cms::Session::AUTO_ACKNOWLEDGE mode
crashes with exception (like reading empty String property, in
activemq::connector::openwire::utils::OpenwireStringSupport::readString)?

3. Why JMX QueueView.purge() method does not actually purge queue (for
those messages appeared due to activemq-cpp crash)?

Thanks.

Regards,
Dziugas Baltrunas

On 8/6/07, Dziugas Baltrunas <dziugas@baltrunas.lt> wrote:
> 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
>

Mime
View raw message