May 6th, 2011, 08:13 AM
How to manage maximum transaction throughput in a clustered Spring app?
We have a Spring application providing webservices running within a JBoss Application Server environment. This is run across multiple nodes, but currently the only element that could be termed clustered are the JBoss Messaging JMS queues that distribute across the nodes.
Most of our web services behave asynchronously - receive a request from a client, place on a queue, acknowledge in response, execute the required action then callback to a web service on the client application (there are many different client applications). These web services often access external services provided by systems that have limited resources available.
We've been asked to look at controlling the throughput of individual web services we provide by client application, ie allow x TPS for application A, y TPS for application B.
We are already using Spring Integration for some elements of our system and considered using multiple PollableChannels with a fixed rate for each channel/application combination, but this would only work on a single node and we want to be able to control the throughput on all nodes as a single metric.
I'm sure this can't be that unusual a problem - how have other people solved it? Are we just missing something obvious (wouldn't surprise me!)?
Last edited by camdenh; May 9th, 2011 at 03:19 AM.
Reason: Clarifying title
Tags for this Thread