hilo de primavera Boot planificador detiene al azar

Joe:

Tengo un programador de arranque de primavera que cumple una tarea específica negocio cada X minutos. Funciona bien hasta que de repente se detiene y no se involucra más. No hay ninguna excepción en los registros o cualesquiera otros registros. Tengo que reiniciar el programa para el programador para trabajar de nuevo.

A veces la tarea del programador va mal, y yo una excepción. Para ser capaz de manejar las excepciones específicamente, escribí una costumbre ManejadorError en la primavera para el planificador que resuelve una tarea separada para el registro de los propósitos. Está vinculado correctamente al planificador y procesa la tarea.

Joe:

Este problema puede venir cuando una excepción no controlada se tira en el interior de un ManejadorError. No estoy seguro acerca de los detalles, sin embargo, una excepción de ejecución tirado por un ManejadorError (o un método en el interior de la misma) que obtiene propaga fuera de él, básicamente, mata el hilo programado para esa tarea. Por otra parte nada se escribe en los registros (sin mensaje de excepción, NADA).

La forma "más fácil" para resolver este es envolviendo la totalidad del método en un bloque try / catch captura de excepciones - aunque dependiendo de por qué usted tiene que Error Handler que podría ser una mala idea. Esto no resuelve el problema que subyace a la mano, pero se mantiene el hilo vivo y le permite registrar el tema.

Ejemplo:

public class MyErrorHandler implements ErrorHandler {

    @Override
    public void handleError(Throwable t) {
        try {
            //handle intended exception (ex. write to database or logs)
        } catch (Exception e) {
            //handle exception that was thrown while trying to handle the intended exception. 
        }
    }

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=277110&siteId=1
Recomendado
Clasificación