activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hiram Chirino" <hi...@hiramchirino.com>
Subject Re: Message redelivery using Stomp with RC2 and RC3
Date Thu, 27 Apr 2006 13:53:15 GMT
Unfortunate, this is caused by a small implementation defect in the
stomp client when using auto ack.  If you manually ack messages from
your client then this goes away.

The details of the problem is that we simulate autoack on the server
side.  With autoack, the client never has to send the server an ack
message.  So when the server receives a message to send to the client,
it gives it to the sever side stomp connector to deliver to the client
and that stomp connector is the one the acks the message.  That ack
goes into a pending list that the read thread for the connector checks
before every socket read.  The problem is that the read thread may be
blocked on a read for a while before it checks that pending list, so
acks are just stacking up.

I think the right fix for this would be to have the reader thread
block waiting for messages on pending list and start and async thread
to read from the socket if not messages are pending.  The async thread
would take a read command and put it on the pending list.  Anybody
have free time to implement this?

Regards,
Hiram

On 4/27/06, Danielius Jurna <danielius@elitnet.lt> wrote:
>
> Yes, in latest snapshot messages are deleted, but I don't think this issue is
> solved completly.
>
> If I'm consuming message with java client, message is deleted from journal
> right after it is sent to the consumer. So journal log looks like:
> Journalled message add
> Journalled message remove
> Journalled message add
> Journalled message remove
>
> If I'm consuming message with stomp client, message is deleted from jounal
> only after some delay. So log looks like:
> Journalled message add
> Journalled message add
> ---- few seconds of waiting
> Journalled message remove
> Journalled message remove
>
> This behaviour causes few problems:
> 1. If Stomp client quits after receiving messages (even after 1-2s after
> receiving message), messages are still left in the journal. After reconnect,
> all those messages are redelivered again.
> 2. If broker runs at full capacity (sender sends as much as broker can
> handle and receiver receives as much as it can), memory consumpsion is
> increasing and after about 1M messages borker crashes. If you add some delay
> in message producer (in my case - adding 100ms sleep) - memory stops
> increasing.
> --
> View this message in context: http://www.nabble.com/Message-redelivery-using-Stomp-with-RC2-and-RC3-t1511957.html#a4115647
> Sent from the ActiveMQ - User forum at Nabble.com.
>
>


--
Regards,
Hiram

Mime
View raw message