Exception handling for Spring 3.2 “@Scheduled” annotation

后端 未结 3 1738
野性不改
野性不改 2020-12-17 14:19

How to customize the exception handling for @Scheduled annotation from spring ?

I have Cron jobs which will be triggered in the server (Tomcat 6) and when any except

3条回答
  •  长情又很酷
    2020-12-17 14:46

    If you want to use Java Config you will need to create configuration implementing SchedulingConfigurer

    @EnableScheduling
    @Configuration
    class SchedulingConfiguration implements SchedulingConfigurer {
        private final Logger logger = LoggerFactory.getLogger(getClass());
        private final ThreadPoolTaskScheduler taskScheduler;
    
        SchedulingConfiguration() {
            taskScheduler = new ThreadPoolTaskScheduler();
            taskScheduler.setErrorHandler(t -> logger.error("Exception in @Scheduled task. ", t));
            taskScheduler.setThreadNamePrefix("@scheduled-");
    
            taskScheduler.initialize();
        }
    
        @Override
        public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
            taskRegistrar.setScheduler(taskScheduler);
        }
    }
    

    You can modify error handler for your needs. Here I only log a message.

    Don't forget to call taskScheduler.initialize();. Without it you'll get:

    java.lang.IllegalStateException: ThreadPoolTaskScheduler not initialized
    

提交回复
热议问题