[jboss-user] [JBoss Messaging] - Re: Message Redistribution on a Cluster

tim.shaw do-not-reply at jboss.com
Fri Sep 19 09:16:25 EDT 2008


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#4177656

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4177656



More information about the jboss-user mailing list