Mar 2nd, 2010, 10:40 PM
Using JMS and Spring to throttle input message processing
I need to develop a way to throttle the processing of database update requests arriving over a Web Services interface. The architecture I'd like to use to to post received messages into a JMS queue and then use pools of JMS consumers, written using Spring, to process the messages in a controlled way.
The reason I need a buffer of this sort is that this is a large scale application, which can receive extreme bursts of update requests; hardware is sufficient to handle a good multiple of the average load, but not the extreme bursts.
I have a way to determine the load on our databases (the bottleneck) and I need to use this to either slow down or stop processing messages off the queue when the database is overloaded; is there anything in the Spring JMS infrastructure which can help me to do this?
An architecture which would support what I want to do is if the message processing loop could invoke a callback method just before next asking for a message from the queue. I've looked over DefaultMessageListenerContainer, but don't see anything in the class, which would meet my needs.
Does anyone have any suggestions?
Thanks - John
Nov 24th, 2010, 12:43 PM
Did you ever find a solution to this problem? I also need to throttle inbound requests.