activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From edan <edan_idze...@premierinc.com>
Subject Can round robin dispatching wait for consumer acks?
Date Mon, 27 Dec 2010 16:51:56 GMT

I have 600+ queues in a single ActiveMQ 5.3.2 broker connected to 4
webMethods consumers using the flag "?consumer.exclusive=true" in order to
guarantee FIFO-ness / strict ordering of each queue across the 4 consumers. 
We may have other troubles with respect to trying to process hundreds of
queues simultaneously (such as each consumer only having one connection
configured), but for the moment I'm just trying to tackle load distribution. 
We really get killed when the consumers are restarted for maintenance, as
all the load shifts according to how they connected.  I think webMethods
just really, really, really wants us to use their native broker :)

I was hopeful that RoundRobinDispatch policy on my queues would guarantee
ordering, and with ?consumer.prefetchSize=0', it pretty much does, with one
big exception--each consumer gets a message almost simultaneously, even when
I wait a few seconds before acknowledging the message, the dispatching only
seems to wait every time around the list of consumers.  I've also tried
turning off RoundRobinDispatch with the same prefetch=0, and it is still
round robin distributed, but it's quite clear that the message dispatching
to my two test consumers is not waiting for each other to ack.  Here's some
sample out of my two consumers, but I figure this must be the intended
behavior.

Time received
1292619899792 Reading message: 1
1292619899806 Reading message: 2
1292619900792 ACKed message: 1
1292619900800 Reading message: 3
1292619900807 ACKed message: 2

I can attach my test consumer source (I'm sending messages with Grinder),
but I assume this is how its supposed to work so a test case it not actually
needed :)  But is there a way for me to do round robin dispatching, taking
the performance hit of waiting for the last consumer to ack before sending
the next one?

Maybe there are other ways to fix this, this just seems like the easiest one
to me :)

Thanks for any ideas in advance! 
-- 
View this message in context: http://activemq.2283324.n4.nabble.com/Can-round-robin-dispatching-wait-for-consumer-acks-tp3165240p3165240.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Mime
View raw message