Soporte de MQSeries

EGL da soporte al acceso de colas de mensajes MQSeries en cualquiera de las plataformas destino. Puede proporcionar este acceso de una de las siguientes maneras:

Puede mezclar ambos métodos en un determinado programa. Sin embargo, en la mayoría de los casos se utiliza exclusivamente uno de los dos métodos.

Independientemente del método que elija, puede controlar varias condiciones de ejecución personalizando los registros de opciones, que son registros básicos globales que los servicios de ejecución EGL pasan en las llamadas a MQSeries. Cuando declare un registro de opciones como variable de programa, puede utilizar un componente de registro de opciones instalado por EGL como una typedef; o bien puede copiar el componente instalado en el propio archivo fuente EGL, personalizar el componente y utilizar el componente personalizado como una typedef.

El método elegido determina cómo los servicios de ejecución EGL hacen que los registros de opciones estén disponibles en MQSeries:
Para obtener información detallada sobre los registros de opciones y sobre los valores que se pasan a MQSeries por omisión, consulte la sección Registros de opciones para registros MQ. Para obtener información detallada sobre el propio MQSeries, consulte los siguientes documentos:

Conexiones

Se conectará a un gestor de colas (llamado gestor de colas de conexión) la primera vez que invoque una sentencia de la lista siguiente:
  • Una sentencia EGL add o get next que accede a una cola de mensajes
  • Una invocación de la función EGL MQCONN o MQCONNX

Sólo puede acceder a un gestor de colas de conexión a la vez; sin embargo, puede acceder a varias colas que están bajo el control del gestor de colas de conexión. Si desea conectarse directamente a un gestor de colas que no sea el gestor de colas de conexión actual, debe desconectarse del primer gestor de colas invocando MQDISC y luego conectarse al segundo gestor de colas invocando add, get next, MQCONN o MQCONNX.

También puede acceder a colas que están bajo el control de un gestor de colas remoto, que es un gestor de colas con el que el gestor de colas de conexión puede interactuar. El acceso entre los dos gestores de colas sólo es posible si el propio MQSeries está configurado para permitir dicho acceso.

El acceso al gestor de colas de conexión se interrumpe cuando se invoca MQDISC o cuando finaliza el código.

Incluir mensaje en transacción

Puede incorporar sentencias de acceso a colas en una unidad de trabajo de modo que todos los cambios realizados en las colas se comprometan o se retrotraigan en un único punto del proceso. Si una sentencia está una unidad de trabajo, se aplica lo siguiente:
  • Una sentencia EGL get next (o una invocación EGL MQGET) sólo elimina un mensaje cuando se produce un compromiso
  • El mensaje colocado en una cola utilizando una sentencia EGL add (o una invocación EGL MQPUT) sólo está visible fuera de la unidad de trabajo cuando se produce un compromiso

Cuando las sentencias de acceso a colas no están en una unidad de trabajo, cada cambio realizado en una cola de mensajes se compromete inmediatamente.

Una sentencia EGL add o get next relacionada con MQSeries se incorpora en una unidad de trabajo si la propiedad includeMsgInTransaction está en vigor para el registro MQ. El código generado incluye las siguientes opciones:
  • Para MQGET, MQGMO_SYNCPOINT
  • Para MQPUT, MQPMO_SYNCPOINT
Si no especifica la propiedad includeMsgInTransaction para un registro MQ, las sentencias de acceso a colas se ejecutan fuera de una unidad de trabajo. El código generado incluye las siguientes opciones:
  • Para MQGET, MQGMO_NO_SYNCPOINT
  • Para MQPUT, MQPMO_NO_SYNCPOINT

Cuando el código finaliza una unidad de trabajo, EGL compromete o retrotrae todos los recursos recuperables a los que accede el programa, que incluyen bases de datos, colas de mensajes y archivos recuperables. Este resultado se produce tanto si se utilizan las funciones de sistema (sysLib.commit, sysLib.rollback) como si se utilizan las llamadas EGL a MQSeries (MQCMIT, MQBACK); en cualquier caso, se invoca la función de sistema EGL apropiada.

Se produce una retrotracción si un programa EGL se termina prematuramente debido a un error detectado por los servicios de ejecución EGL.

Personalización

Si desea personalizar la interacción con MQSeries en lugar de depender del proceso por omisión de las sentencias add and get next, lea la información siguiente.

Componente EGL dataTable

Existe un conjunto componentes EGL dataTable que le ayudarán a interactuar con MQSeries. Cada componente permite a las funciones proporcionadas por EGL recuperar valores de listas basadas en memoria durante la ejecución. La sección siguiente incluye detalles sobre cómo se despliegan las tablas de datos.

Cómo hacer posible la personalización

Para hacer posible la personalización, debe incorporar en el proyecto varios de los archivos EGL instalados sin cambiarlos en modo alguno. Los archivos son los siguientes:
records.egl
Contiene componentes de registros básicos que pueden utilizarse como typedef para los registros de opciones que se utilizan en el programa; también incluye componentes de estructura que utilizan dichos registros y que proporcionan la flexibilidad de desarrollar componentes de registro propios
functions.egl
Contiene dos conjuntos de funciones:
  • Funciones de mandato MQSeries, que acceden directamente a MQSeries
  • Funciones de inicialización, que permiten colocar valores iniciales en los registros de opciones que se utilizan en el programa
mqrcode.egl, mqrc.egl, mqvalue.egl
Contiene un conjunto de componentes EGL dataTable que utilizan las funciones de mandato e inicialización

Las tareas son las siguientes:

  1. Utilizando el proceso para importar archivos en el entorno de trabajo, incorpore dichos archivos en un proyecto EGL. Los archivos residen en el siguiente directorio:
    dirInstalación\egl\eclipse\plugins\
    com.ibm.etools.egl.generators_versión\MqReusableParts
    dirInstalación
    El directorio de instalación del producto, como por ejemplo C:\Program Files\IBM\RSPD\6.0. Si instaló y tuvo un producto de Rational Developer antes de instalar el producto que está utilizando ahora, deberá especificar el directorio utilizado en la instalación anterior.
    versión
    La última versión del conector; por ejemplo, 6.0.0
  2. Para hacer que los componentes estén disponibles más fácilmente en el programa, escriba una o más sentencias EGL import en el archivo que contiene el programa. Si los archivos que deben importarse residen en un proyecto que no es el proyecto en el que está desarrollando el código, asegúrese de que su proyecto hace referencia al otro proyecto.

    Para obtener información detallada, consulte la sección Import.

  3. En el programa, declare las siguientes variables globales:
    • Declare MQRC, MQRCODE y MQVALUE, cada una de las cuales debe utilizar como una typedef el componente dataTable que tiene el mismo nombre que la variable.
    • Para cada registro de opciones que desee pasar a MQSeries, declare un registro básico que utilice un componente de registro de opciones como una typedef. Para obtener información detallada sobre cada componente, consulte la sección Registros de opciones para registros MQ.
  4. En la función, inicialice los registros de opciones que pretende pasar a MQSeries. Puede hacerlo fácilmente invocando la función de inicialización EGL importada para un determinado registro de opciones. El nombre de cada función es el nombre del componente que se utiliza como una typedef para el registro, seguido de _INIT. Un ejemplo es MQGMO_INIT.
  5. Establezca valores en los registros de opciones. En muchos casos, se establece un valor asignando un símbolo EGL que representa una constante, cada una de las cuales se basa en un símbolo descrito en la documentación de MQSeries. Puede especificar varios símbolos EGL sumando los símbolos individuales, como en el siguiente ejemplo:
      MQGMO.GETOPTIONS = MQGMO_LOCK
                         + MQGMO_ACCEPT_TRUNCATED_MSG
                         + MQGMO_BROWSE_FIRST
  6. La primera vez que genere un determinado programa que utiliza las características de personalización del soporte de MQSeries, también generará las tablas de datos que utiliza dicho programa. Para generar todas las tablas de datos que se utilizan en el programa, deje que la opción del descriptor de construcción genTables tome por omisión el valor YES. Para obtener detalles adicionales, consulte la sección Componente DataTable.
Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.