The behaviour I want to see is that, when processing a large queue (100k+ msgs), the
messages are processed roughly evenly across all machines in the cluster. The reasoning is
that, if 1 machine takes (roughly, elapsed time) 110 minutes, 3 machines will take (e.g.)
35 minutes.
This is in the context of other, user-interactive, applications on the same cluster - I
don't want to swamp an individual machine.
This behaviour is implemented by JBM, and is configurable as follows :
1) Allocate a given number of MDB's, appropriate to the server, using the MaxSession
parameter for the invoker (standardjboss.xml) - this doesn't seem to work for me, but
is an AS question, not JBM.
2) Modify preFetch size to pull 'optimal' number of messages to each machine for
processing.
3) ... Any other tunable elements?
This causes the other machines to kick in when the queue gets too full for the initial
machine to process the messages - this happens correctly.
Round robin is a special case of this, where both are set to 1 (obviously not a good
idea). I would like to ensure that all machines process batches of X at a time, where X is
determined for the application/machine etc.
anonymous wrote : JBM optimally distributes load, always giving it to the local node if it
can cope with it
My question then becomes - How does JBM determine when the load is too great for the
initial machine? Is this configurable (or, better, pluggable)?
I can imagine numerous scenarios - CPU load, MDB pool usage, Messages on Queue etc.
Could you point me towards how this is done please (source/wiki/uri all fine).
Thanks for your time.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4177656#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...