Ejemplo 4: Detención automática de un MDB cuando no se ha especificado un destino de excepción

Como preparación antes de que un recurso del sistema deje de estar disponible o para un mensaje con problemas, configure el sistema para que detenga automáticamente el bean controlado por mensaje (MDB). Para mantener el orden de los mensajes, no utilice un destino de excepción.

Antes de empezar

En esta tarea se presupone que ha desplegado una aplicación empresarial que contiene un bean controlado por mensajes (MDB) que interactúa con los recursos del sistema externos.

El destino en el que escucha el MDB debe utilizar un destino de excepción, es decir, hay que configurar como 'none' (ninguno) un destino de excepción para el destino de cola o de espacio de temas.

Para completar esta tarea, necesita la información siguiente:
  • La aplicación empresarial que contiene el MDB.
  • Los recursos del sistema externo dependientes.
  • Un valor de 1 para Umbral de mensaje fallido secuencial. Es el número máximo de errores secuenciales en la entrega de mensajes, tras el cual el MDB se detiene. Esta propiedad se aplica a los conjuntos de mensajes.
    Nota: Si esta propiedad se establece en un valor mayor que 1, el sistema lo restaura automáticamente a 1 cuando un destino de excepción se configura como none.
  • Un valor de 5000 para Retardo entre reintentos de mensaje fallido, es decir, el tiempo en milisegundos antes de que un mensaje que falla esté disponible para ser entregado al MDB. Durante este periodo, se pueden entregar otros mensajes, a menos que Umbral de mensaje fallido secuencial y el valor máximo de simultaneidad estén establecidos en 1.
  • Un valor aceptable para Entregas máximas fallidas por mensaje, esto es, el número máximo de intentos anómalos de procesar un mensaje. Esta propiedad se aplica a mensajes individuales.

El MBean JCA emite notificaciones JMX para indicar que el MDB está en pausa y que el MDB se ha reanudado. Considere registrar una escucha de mensajes en el MBean JCA para recibir las notificaciones JMX.

Acerca de esta tarea

En este escenario, la aplicación empresarial es un sistema de ejecución continuada que utiliza un MDB desplegado para acceder a un recurso del sistema externo.

Cuando se detecta un mensaje con problemas (msg1 en este caso de ejemplo), se vuelve a colocar en la cola.

En lugar de hacer que msg1 esté isponible inmediatamente al MDB, se oculta durante el retardo de reintentos de Retardo entre reintentos de mensaje fallido (cinco segundos en este caso de ejemplo).

Cuando el número de mensajes ocultos alcanza el Umbral de mensaje fallido secuencial, el MDB no procesará más mensajes hasta que uno de los mensajes ocultos vuelva a estar disponible. En este caso de ejemplo, este umbral se alcanza en cuanto msg1 se oculta.

Cuando caduca el Retardo entre reintentos de mensaje fallido para msg1, msg1 deja de estar oculto y se vuelve a procesar.

Este proceso se repite hasta que msg1 alcanza su límite de Entregas máximas fallidas por mensaje (cinco veces en este caso de ejemplo).

Después de que msg1 deja de estar oculto por cuarta vez, se retrotrae y se vuelve a ocultar, se alcanza el valor Umbral de mensaje fallido secuencial y el MDB se detiene automáticamente. El MBean JCA emite una notificación JMX y una entrada de registro alerta al administrador del sistema que el MDB se ha detenido.

Procedimiento

  1. Vaya a la aplicación empresarial desplegada que contiene el MDB.
  2. En el MDB, vaya a su especificación de activación JMS. Pulse Recursos -> JMS -> Especificaciones de activación -> nombre_especificación_activación.
  3. Escriba un valor de 1 para Umbral de mensaje fallido secuencial.
  4. Escriba un valor de 5000 para Retardo entre reintentos de mensaje fallido.
  5. Guarde la configuración.
  6. Vaya al destino donde escucha el MDB. Pulse una de las siguientes vías de acceso, según corresponda:
    • Integración de servicios -> Buses -> nombre_bus -> [Recursos de destino] Destinos -> nombre_cola
    • Integración de servicios -> Buses -> nombre_bus -> [Recursos de destino] Destinos -> nombre_espacio_temas
  7. Bajo Destino de excepción, seleccione Ninguno.
  8. Escriba un valor de 5 en Entregas máximas fallidas por mensaje.
  9. Guarde los cambios en la configuración maestra.
  10. Cuando reciba una notificación JMX y una entrada de anotaciones indique que se ha realizado una pausa en el MDB (o en el punto final), investigue el problema con el recurso del sistema que utilizaba el MDB. Mientras el MDB estén en pausa, dado que no se ha configurado ningún destino de excepción, msg1 permanece en la cola. No se procesa ningún otro mensaje.
  11. Si reanuda el MDB pero el problema con el mensaje anómalo continúa, se alcanza el límite de número máximo de entregas anómalas en el primer reintento del mensaje, pero debido a que no se ha configurado un destino de excepción, el mensaje no se mueve a otra cola. En su lugar, se bloquea todo el punto de cola para todos los consumidores durante el intervalo de retardo de reintentos de Retardo entre reintentos de mensaje fallido (cinco segundos en este caso de ejemplo). Transcurrido este tiempo, los consumidores vuelven a comenzar. Si el mensaje anómalo continúa allí y vuelva a fallar, el punto de cola se bloquea durante otros 5 segundos. Este proceso continúa hasta que elimina el mensaje anómalo de la cola, ya sea suprimiéndolo manualmente o resolviendo el problema que tiene y, al hacerlo permite que el proceso de la aplicación consumidora se realice correctamente.
  12. Vuelva a iniciar la sesión en la consola administrativa, vaya a la misma aplicación empresarial y pulse Reanudar en el panel administrativo del MDB. También puede reanudar el MDB utilizando scripts y el MBean JCA. La notificación JMX inicial y la entrada de anotaciones indican qué MBean debe utilizarse para reanudar el MDB. El MDB empieza a controlarse con los mensajes que están en el destino.

Resultados

Ha configurado el sistema para que se proteja a sí mismo frente a anomalías en los recursos externos y al mismo tiempo ha mantenido el orden de los mensajes.

Qué hacer a continuación

Cuando se reanuda el MDB, el MBean JCA emite una notificación JMX para indicar que el MDB se ha reanudado. Los mensajes de la cola se consumen, los mensajes que han fallado se reintentan y la transacción se compromete.

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjn_mdb_0001_Ex4
File name: tjn_mdb_0001_Ex4.html