2009-06-04 13 views
6

Soy nuevo en JMS y estoy trabajando en la configuración de ActiveMQ con Tomcat 6 y Spring. Tengo la mayoría de las cosas básicas configuradas, sin embargo, estoy un poco confundido con el Message Listener Containers que proporciona Spring. Al leer la documentación, parece que Message Listener Container se usa para "gestionar" la suscripción (estoy trabajando con Topics), anular la suscripción y entregar el mensaje al oyente. No estoy seguro de si estoy pensando en esto correctamente. Si este es el caso, no veo ninguna documentación sobre cómo tendría múltiples clases suscribirse al mismo tema usando el Contenedor de escucha de mensajes. Veo que puede establecer la propiedad messageListener, pero eso solo permitiría que una clase pueda suscribirse a un tema. No parece correcto crear otra instancia del mismo Contenedor de Escucha de Mensaje para que otro suscriptor (POJO Dirigido por Mensaje) escuche el mismo tema.Contenedor de escucha de mensaje JMS de primavera

¿Alguien puede arrojar algo de luz sobre esto para mí? Creo que puedo estar un poco confundido.

¡Gracias de antemano!

Respuesta

0

El contenedor es una especie de envoltorio para "adaptar" cualquier POJO a la recepción de mensajes de una Cola o Tema. Si desea múltiples oyentes, terminará con varios contenedores.

4

Si está familiarizado con los EJB dirigidos por mensaje, entonces un Spring MessageListenerContainer es un reemplazo eficaz para un MDB. Recibe su nombre porque está conectado con el tema/cola JMS, así como con un solo MessageListener JMS, y extrae los mensajes de ese tema/cola y los envía a su MessageListener.

Tiene toda la razón de que solo se puede registrar un MessageListener con cada contenedor a la vez, pero considere que si bien el código MessageListenerContainer puede ser bastante complejo, en realidad es un componente de tiempo de ejecución muy liviano. No tengas miedo de crear varias instancias de esto.

Además, asegúrese de elegir la implementación de MessageListener adecuada para su situación. La implementación simple y predeterminada son realmente bastante diferentes, pero ninguna es "mejor".

2

Los hombres tienen la certeza de que varios Contenedores lo ayudarán, pero parece un enfoque equivocado. Dado que el objetivo de JMS es integrar diferentes aplicaciones/servicios en lugar de procesos internos de aplicación (varias clases de las que usted habla). Sugeriría enviar mensaje a diferentes clases usted mismo después de recibirlo por el Escuchante de mensaje. De lo contrario, eche un vistazo a frameworks como Apache Camel o Spring Integration.

Cuestiones relacionadas