Ejemplo 2: Parada automática de un MDB cuando un recurso del sistema deja de estar disponible

Como preparación para el caso en que un recurso del sistema deja de estar disponible, configure el sistema para que detenga de forma automática el bean controlado por mensajes (MDB) después de un número pequeño de errores de mensaje y para alertarle del problema.

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. Este destino de excepción puede ser el valor predeterminado del sistema o uno configurado específicamente para el destino.

Para completar esta tarea, necesita la información siguiente:
  • La aplicación empresarial que contiene el MDB.
  • El recurso del sistema externo dependiente.
  • Un valor de 3 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.
  • 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 de 5 para Entregas máximas fallidas por mensaje, es decir, el número máximo de intentos fallidos para procesar un mensaje, después del cual el mensaje se envía de su destino previsto al destino de excepción. Esta propiedad se aplica a mensajes individuales.

Acerca de esta tarea

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

Si el recurso externo sufre un problema y pasa a estar no disponible, el MDB desplegado no podrá acceder a dicho recurso y, por tanto, la transacción asociada al MDB se retrotraerá y el mensaje msg1 se volverá a poner en la cola.

El mensaje msg1 se oculta durante un retardo de reintento de cinco segundos, establecido en Retardo entre reintentos de mensaje fallido, antes de que pase a estar disponible al MDB.

Mientras tanto, el MDB procesa el siguiente mensaje de la cola, msg2. El recurso externo sigue sin estar disponible, por lo tanto, el proceso de este mensaje también falla. La transacción del mensaje se retrotrae y el mensaje se oculta durante cinco segundos. Se procesa el siguiente mensaje de la cola, msg3, falla y se oculta también.

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.

Cuando caduca el Retardo entre reintentos de mensaje fallido para msg1, msg1 deja de estar oculto y se vuelve a procesar. Dado que el recurso sigue sin estar disponible, el mensaje se vuelve a ocultar. Lo mismo ocurre con los mensajes msg2 y msg3.

Se considera que un mensaje ha fallado cuando se retrotrae una vez menos que el límite de Entregas máximas fallidas por mensaje (cinco veces en este caso de ejemplo). Por lo tanto, cuando msg1 deja de estar oculto por cuarta vez, se retrotrae y se vuelve a ocultar, el valor de número de errores secuenciales se incrementa. Llegado este punto, el mensaje msg2 deja de estar oculto, se retrotrae y se vuelve a ocultar. De forma parecida, msg3 deja de estar oculto, se retrotrae y se vuelve a ocultar. El recuento de errores secuenciales alcanza el 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.

Nota: En este escenario, el MDB detiene automáticamente cuando el recurso del sistema deja de estar disponible durante aproximadamente 20 segundos. Si el recurso del sistema deja de estar disponible durante un período de tiempo más corto y el número de anomalías secuenciales no alcanza Umbral de mensaje fallido secuencial, los mensajes se procesan correctamente en uno de los reintentos. De hecho, el sistema continúa con normalidad sin intervención manual y sin enviar mensajes al destino de excepción.

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 3 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. Escriba un valor de 5 para Entregas máximas fallidas por mensaje.
  8. Guarde los cambios en la configuración maestra.
  9. 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á en pausa, no se envía ningún mensaje al destino de excepción y no aparece ningún mensaje de error en la consola relacionado con la base de datos detenida.
  10. Cuando el recurso del sistema que ha fallado pasa a estar disponible, reinícielo.
  11. 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.

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_Ex2
File name: tjn_mdb_0001_Ex2.html