activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Strachan" <james.strac...@gmail.com>
Subject Re: Consumer does not receive anything after session.rollback()
Date Thu, 20 Jul 2006 06:24:24 GMT
On 7/20/06, Adrian Neaga <aneaga@tacitknowledge.com> wrote:
> Exactly, no messages get delivered until the one that failed is retried for
> 3 times, i've been told that is the way queues work.

Yes - otherwise ordering would be broken.

> What i would want is to have messages delivered no matter if there was one
> failed before, that kind of breaking the queue.
> I dont want to wait 1 hours for it to try redelivering a message for the 3d
> time to get all the messages that came in the meantime.
> I'd appreciate any ideas of how this could be implemented.

Well, normally you use a queue as a load balancer. Put 1000 messages
on a queue and have them load balanced across many threads, mayb in
many JVMs. So just because 1 thread is redeliverying a message a few
times to deal with failure doesn't mean that other threads/JVMs can't
be processing the other messages..

So if you really don't want to stop 1 bad message slowing you down,
run many consumers.

You can control exactly how long to spend trying to redeliver failed
messages; then once that is reached, its sent to a dead letter queue.
So you could if you want just retry once (or never) and just send the
message to a dead letter queue then at some point in the future (hours
or days even) replay messages on the dead letter queue back again.

-- 

James
-------
http://radio.weblogs.com/0112098/

Mime
View raw message