I'd like to try the load balancer idea, can this be easily done with
ActiveMQ ?
If i run many consumers the same message may be delivered to more than one
consumer
which is not acceptable..
Thanks again for your help.
----- Original Message -----
From: "James Strachan" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Thursday, July 20, 2006 09:24
Subject: Re: Consumer does not receive anything after session.rollback()
On 7/20/06, Adrian Neaga <[EMAIL PROTECTED]> 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/