Valores optimos para JMS con GlassFish y Spring

Hola gente, por aqui lanzando una pregunta relacionada con JMS. Desarrolle una aplicacion WEB de alto volumen desplegado en GlassFish V3.1, como el proceso tarda varias horas en ser procesado decidi usar JMS con la ayuda de mi amigo fiel "Spring", hasta aqui todo bien, funciona sin ningun problema, pero no esta alcanzando los tiempos esperados y mi pregunta es: ¿Que valores son los optimos a configurar del lado del JMS(GlassFish) y del lado de Spring(consumidores concurrentes)?

Actualmente estoy lanzando 20,000 mensajes a la cola teniendo como resultado un tiempo de 2 segundos por transaccion cuando sin JMS se alcanza menos de 1 segundo por transaccion, creo que el tema esta en las propiedades configuradas:

Fabrica de Conexiones (GlassFish):

Tamaño de Pool Inicial y Mínimo: 16
Tamaño de Pool Máximo: 64
Cantidad de Cambio de Tamaño del Pool: 4
Timeout de Inactividad: 300 segundos
Tiempo de Espera Máximo: 60000 Milisegundos

Del lado de Spring tengo configurado:
Consumidores concurrentes: 8

Espero sus comentarios, gracias.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de paranoid_android

Algunas ideas...

Desde mi punto de vista es un problema de aprovechar los recursos de la(s) maquinas o poder de computo.
1.-Es adecuado el uso de una cola vs topic.
2.-Si pudieras atender mas peticiones como asegurarias que se usan mas procesarodes de tu servidor(es).
3.-Como te aseguras que tu despliegue es correcto para atender la concurrencia.

Gracias paranoid

El servicio que consume los mensajes esta hecho en Spring con scope "prototype", realizan una tareas y despues consumen un Servicio WEB (SAT) el cual indica que puede atender hasta 3500 X min peticiones concurrentes. El servidor donde corre la aplicacion tiene 8 Core y 16GB en RAM.

¿Cuales serian los valores optimos?