Funcionamiento Interno de IBM MQ y Componentes EJB
Funcionamiento Interno de IBM MQ
Cuando una aplicación desea colocar un mensaje en una cola, invoca una API MQPUT.
- El queue manager verifica si la cola indicada es local o remota.
- Si la cola es remota, el mensaje se coloca en una cola de transmisión. El queue manager agrega información al encabezado del mensaje, como el nombre de la cola y el queue manager de destino.
- La transmisión se realiza a través de canales. Los canales pueden iniciarse manual o automáticamente.
Inicio Automático de Canales
Para iniciar un canal automáticamente, la cola de transmisión debe estar asociada a una channel initiation queue. Esta cola es monitoreada por un channel initiator.
- El channel initiator es un programa MQSeries que debe estar en ejecución. Cuando el channel initiator detecta un mensaje en la cola de transmisión, inicia un message channel agent (MCA).
- El MCA mueve el mensaje a través de la red hacia la otra máquina.
Procesamiento de Mensajes de Entrada
El programa que procesa el mensaje de entrada puede iniciarse manual o automáticamente.
- Para iniciar el programa automáticamente, se debe asociar una cola de iniciación y un proceso a la cola local, y un trigger monitor debe estar en ejecución.
- Cuando el programa se inicia automáticamente, el MCA coloca el mensaje entrante en la cola local y el mensaje de trigger en la cola de iniciación.
- La cola es monitoreada por un trigger monitor. Este trigger monitor invoca el programa receptor.
- El programa receptor utiliza la API
MQGETpara recuperar el mensaje desde la cola local.
Comunicación entre Queue Managers
Para conectar dos queue managers, en cada sistema es necesario:
- Una definición de una cola remota, que represente una cola local en la máquina destino y que asocie una cola de transmisión (Q1 en sistema A y Q2 en sistema B).
- Una cola de transmisión que mantenga todos los mensajes destinados al sistema remoto hasta que el canal los transmita (QMB en sistema A y QMA en sistema B).
- Un canal sender que tome los mensajes desde la cola de transmisión y los transmita al otro sistema a través de la red (QMA.QMB en sistema A y QMB.QMA en sistema B).
- Un canal receptor que reciba mensajes y los coloque en una cola local (QMB.QMA en sistema A y QMA.QMB en sistema B). El canal receptor debe ser iniciado automáticamente por el queue manager (uso de Channel Auto Definition).
- Una cola local desde la cual el programa obtiene los mensajes (Q2 en sistema A y Q1 en sistema B).
Uso de Triggers
Hay dos tipos de trigger:
- EVERY: Cada vez que llega un mensaje a una cola, se ejecuta el programa.
- FIRST: El trigger se activa solo si, cuando llega un mensaje, la cola está vacía.
- N Messages: Un mensaje de trigger se coloca en la cola de iniciación cuando hay N mensajes en la cola.
MQI
Un programa puede comunicarse directamente con su queue manager local. El programa usa una interfaz MQI.
- MQI es un conjunto de API's que permiten ejecutar servicios en un queue manager.
- Existe una API MQI para cada lenguaje de programación o plataforma: C, COBOL, Java.
Enterprise Java Beans (EJB)
Un Enterprise Bean es un componente que contiene la lógica de negocio del sistema.
- Los EJB permiten la invocación de lógica de negocio de forma remota, en un ambiente distribuido.
- Un componente EJB puede ser reutilizado desde otras aplicaciones J2EE.
Tipos de EJB
Session Beans
- Implementan lógica de negocio.
- Soportan un modelo de comunicación síncrona.
Entity Beans
- Implementan la capa de persistencia.
- Representan un modelo de datos contra un modelo de objetos.
Message Driven Beans
- Implementan lógica de negocio.
- Soportan un modelo de comunicación asíncrona.
Session Bean
Implementa la lógica de negocio de una aplicación.
- Es una clase Java tratada de manera especial por el servidor de aplicaciones:
- Transaccionalidad
- Ciclo de vida
- Seguridad
- Invocación remota
Tipos de Session Bean
Stateless
- No guardan estado de la comunicación con el cliente.
Stateful
- Almacenan el estado de la comunicación con el cliente.
- Pueden guardar objetos en la sesión.
Ciclo de Vida
Stateful y Stateless