Service Activator & Transaction
We process about 300 messages / second in our application. The Service Activator pattern has been very helpful to fork off and distribute processing of messages. We fork off messages to a JMS queue for processing. In some cases, the forked off messages need to run inside the same transaction of the caller and JMS helps us achieve this.
For more information on Service Activator, refer to http://java.sun.com/blueprints/corej2eepatterns/Patterns/ServiceActivator.html and http://www.eaipatterns.com/MessagingAdapter.html