Pregunta

Tengo 2 beans controlados por mensajes. 2 Especificaciones de activación para estos beans. Tengo un bus de mensajes y ambas especificaciones de activación están configuradas para este bus. Tengo 2 colas diferentes y una conexión de cola configurada de fábrica para ese bus de mensajes.

Ahora, escribiría mi código para enviar un mensaje a una de las colas en tiempo de ejecución después de determinar la cola. Sin embargo, mis dos MDB reciben el mismo mensaje. ¿Cómo se hace esta configuración en general? ¿Siempre configuro 1 cola - > 1 Fábrica de conexiones de cola - > 1 bus de mensajes - > 1 MDB? ¿Es todo una relación uno a uno?

Oh, olvidé mencionar esto: estoy usando Websphere Application Server v6.1

¿Fue útil?

Solución

En general, el concepto es que:

  1. se envía un mensaje (Cola) / publicado (Tema) a un destino (Cola / Tema)
  2. la ActivationSpec escucha mensajes en un destino particular (Cola / Tema)
  3. ActivationSpec: Destination es una relación 1: 1
  4. Un bean (MDB que es un consumidor) está configurado para escuchar una ActivationSpec.

Lo que esto significa es que, en efecto, el bean está vinculado a un destino con una capa de indirección proporcionada por la activaciónSpec.

¿Dónde entra el autobús? SIBus es la infraestructura de mensajería que hace posible todo esto. Los destinos están alojados en el autobús.

En cuanto a la pregunta: ActivationSpec se configuraría para escuchar un destino en el bus al que se enviarían los mensajes. La fábrica de conexiones decide el bus al que se enviará el mensaje. Siempre que el nombre del destino sea único y esté dirigido a una cola específica (la cola JMS está vinculada al destino en el bus) un mensaje solo será recibido por un ActivationSpec.

¿cuántos destinos (bajo el enlace SIBus en la consola de administración WAS) se han creado en el bus? ¿Podría verificar / validar si la configuración es correcta?

para responder a sus preguntas: "¿Es un bus por especificación de activación y una fábrica de conexiones de cola por cola?" - la respuesta es NO.

  1. Bus es la infraestructura subyacente que puede alojar " n " destinos One ActivationSpec escucha un destino.
  2. Con la conexión de cola factory es una fábrica (patrón de fábrica J2EE) para crear colas.

Otros consejos

Creo que estás diciendo que quieres que ambos MDB reciban el mismo mensaje, ¿verdad?

Si este es el caso, los MDB deben escuchar un tema no una cola .

Alternativamente, hay formas de configurar IBM MQ para reenviar mensajes, por lo que, por ejemplo, un mensaje publicado en una cola particular podría volver a publicarse en n otro < em> colas , pero solo he visto que se usa cuando se produce algún tipo de enriquecimiento de mensajes antes de la re-publicación, por lo que sospecho que sería excesivo para lo que está tratando de lograr.

¿Por qué necesitas el bus de mensajes?

Normalmente asocio un MDB con una cola, es una relación 1: 1. Envíe un mensaje a una cola, el oyente lo recibe. ¿Qué te está comprando el autobús?

He hecho JMS con WebLogic, y no existe tal construcción como un bus de mensajes requerido. Creo que es una cosa de IBM.

Aquí está un ejemplo de cómo hacer JMS con Spring. Así es como recomendaría continuar.

ACTUALIZACIÓN: Interpreté mal su pregunta. Cuando dijiste que ambas colas recibían el mismo mensaje, no pensé que ese fuera el comportamiento deseado. Si es así, entonces los temas son la forma correcta de hacerlo. Las colas son mensajes punto a punto; los temas son publicación / suscripción.

Sospecho que la configuración que tiene no está configurada de la manera que cree. Usamos la misma configuración que describió, con muchos MDB (con una cola y especificaciones de activación), una única fábrica y bus de mensajes y todo funciona como se esperaba.

En realidad, no es posible obtener el comportamiento que está viendo a menos que envíe el mismo mensaje a ambas colas o haya definido un tema en lugar de una cola. Estoy bastante seguro de que incluso si ambos MDB leen desde la misma cola, solo uno recibirá el mensaje, ya que una cola solo admite mensajes punto a punto. Lo que ha descrito es un comportamiento basado en temas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top