2009-04-27 12 views

Respuesta

6

Hay algunas advertencias con Spring JMS.

  1. No debe usar Spring JMS directamente en una fábrica de conexiones JMS. Esto se debe a que Spring, en especial JmsTemplate, abre una conexión, la usa para un mensaje y luego la cierra. Este es el patrón correcto para usar cuando la fábrica de conexiones es, de hecho, un grupo de conexiones. Pero si realmente es solo una fábrica de conexiones, vas a sacrificar el servidor bajo carga. Normalmente, esto solo es un problema cuando se ejecuta una aplicación independiente en lugar de dentro de un contenedor J2EE, que generalmente tiene adaptadores de recursos u otras cosas que pueden agrupar para usted. Spring proporciona un bean SingleConnectionFactory que reutilizará una conexión, pero esta no es la mejor solución cuando está utilizando un servidor en clúster y desea equilibrar la carga de sus conexiones y trabajo.
  2. Las API de Spring están diseñadas para procesar mensajes individuales a la vez. En algunos casos, donde puede tratar con un lote de mensajes, puede ser preferible usar Spring para proporcionarle las fábricas de conexiones y cosas por el estilo, pero rodar su propio código para realmente hacer el mensaje de E/S. De esta forma, puede, por ejemplo, configurar una sesión transaccionada, procesar 100 mensajes y luego confirmar el acuse de recibo como un lote. Eso debería reducir la carga de trabajo en el servidor, suponiendo que puede hacerlo de forma segura.
+1

Son "Spring APIs" todas diseñadas para procesar mensajes individuales en una time " No lo creo. Si consume mensajes simplemente defina un DefaultMessageListenerContainer o similar, entonces todo lo que necesita hacer es definir un método onMessage para consumir los mensajes. Puede aumentar y disminuir los consumidores en el tiempo de ejecución o de configuración. –

5

Puede consultar Spring in Action. Tiene un capítulo sobre mensajería usando JMS de Spring que encontré útil.

Cuestiones relacionadas