JMS fábrica de conexiones

Una fábrica de conexiones es un objeto que un cliente JMS (un programa JMS que utiliza la API JMS ) utiliza para crear una conexión con un proveedor JNDI (un proveedor de mensajería como IBM® MQ).

Puede utilizar IBM MQ Explorer para crear fábricas de conexiones y para definir los parámetros de conexión que la fábrica de conexiones utilizará para crear conexiones.

Las fábricas de conexiones, como los destinos, son objetos administrados y se almacenan en un espacio de nombres de JNDI , que es una ubicación definida dentro del servicio de nombres y directorios. El contexto inicial define la raíz del espacio de nombres JNDI . En IBM MQ Explorer, todas las fábricas de conexiones se almacenan en carpetas de fábricas de conexiones en el contexto y subcontextos adecuados, tal como se muestra en la figura siguiente.

En la figura, la fábrica de conexiones denominada Connection Factory 1 se almacena en la carpeta Fábricas de conexiones del contexto inicial denominado File System Initial Context.

Captura de pantalla de una fábrica de conexiones en la carpeta Fábricas de conexiones.

Cuando define una fábrica de conexiones, selecciona el proveedor de mensajería que se utiliza como proveedor de JMS (por ejemplo, IBM MQ o en tiempo real); una fábrica de conexiones sólo puede crear conexiones con ese proveedor de mensajería. Para que el cliente de JMS cree conexiones con un proveedor de mensajería diferente, debe crear una fábrica de conexiones nueva y especificar el proveedor de mensajería. El transporte en tiempo real no está disponible en IBM MQ 8.0. Si utiliza IBM MQ 8.0 , puede definir el transporte en tiempo real, pero falla cuando se intenta crear una conexión.

Fábricas de conexiones independientes del dominio

Hay dos dominios de mensajería: el dominio de mensajería punto a punto y el dominio de mensajería de publicación/suscripción. Puede crear una fábrica de conexiones para crear conexiones específicamente para mensajería punto a punto (utilizando la interfaz QueueConnectionFactory) o para mensajería de publicación/suscripción (utilizando la interfaz TopicConnectionFactory). A partir de JNDI, también puede crear fábricas de conexiones que sean independientes del dominio y, por lo tanto, se pueden utilizar para la mensajería punto a punto y de publicación/suscripción (utilizando la interfaz ConnectionFactory). Para obtener más información, consulte Creación de una fábrica de conexiones.

Si la aplicación JMS está pensada para utilizar sólo mensajería punto a punto o sólo mensajería de publicación/suscripción, puede seleccionar el dominio de mensajería específico cuando cree la fábrica de conexiones y se cree una fábrica de conexiones específica del dominio.

Sin embargo, si desea realizar trabajos tanto punto a punto como de publicación/suscripción bajo la misma transacción, puede crear una fábrica de conexiones independiente de dominio. Por ejemplo, es posible que desee que una aplicación JMS se suscriba a un tema (mensajería de publicación/suscripción) y, cuando la aplicación JMS recibe un mensaje determinado, envía otro mensaje a una cola (mensajería punto a punto). Es difícil realizar de forma fiable trabajo punto a punto y de publicación/suscripción bajo la misma transacción si utiliza fábricas de conexiones específicas de dominio: debe crear una fábrica de conexiones aparte para cada dominio de mensajería, lo que significa que el trabajo punto a punto se realiza bajo una transacción controlada por la sesión QueueSession y el trabajo de publicación/suscripción se realiza bajo una transacción controlada por la sesión TopicSession. Es difícil asegurar que se han realizado o se han restituido las dos acciones, de envío y recepción.

En lugar de crear una fábrica de conexiones específica de dominio para el trabajo punto a punto y otra fábrica de conexiones específica de dominio para el trabajo de publicación/suscripción, puede crear una sola fábrica de conexiones independiente de dominio para ambos trabajos. Esto significa que la fábrica de conexiones crea una conexión, que crea una sesión. La sesión crea un MessageConsumer de un tema y un MessageProducer en una cola. Cuando la aplicación JMS recibe el mensaje publicado, el siguiente mensaje se puede enviar a la cola bajo la transacción de la misma sesión; ambas operaciones se pueden confirmar o retrotraer como una sola unidad de trabajo.

Para obtener más información, consulte Utilización de clases de IBM MQ para JMS.