Spring Schedule task 添加 error-hander

原因来自于系统有两天定时任务执行失败,查阅日志时,只能看到

Unexpected error occurred in scheduled task.

在Spring 源码中,可以从TaskUtils中看出端倪,Spring 默认提供的定时任务处理器是

LoggingErrorHandler

private static class LoggingErrorHandler implements ErrorHandler {

   private final Log logger = LogFactory.getLog(LoggingErrorHandler.class);

   @Override
   public void handleError(Throwable t) {
      if (logger.isErrorEnabled()) {
         logger.error("Unexpected error occurred in scheduled task.", t);
      }
   }
}

那么为了能够在定时任务发生异常时看到完整的异常信息,需要我们特别配置下

主要的工作还是在Spring.xml

一般地,想要使用Spring基于注解的定时任务,我们只需要在XML文件中配置

<task:annotation-driven/> 

所以加入自己的配置也很简单,只需要展开即可。默认情况下,Spring 启用的是 org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler,我们不改变这个依旧配置

ThreadPoolTaskScheduler为任务调度

<task:annotation-driven scheduler="default" />
//加入一些个性配置,比如线程池大小
<bean name="taskDefault" class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler">
    <property name="poolSize" value="5"/>
//配置自定义异常处理
    <property name="errorHandler" ref="scheduleTaskErrorHandler"/>
</bean>
//注册到Spring 容器
<bean name="scheduleTaskErrorHandler" class="com.ScheduleTaskErrorHandler"/>

ScheduleTaskErrorHandler.java

@Override
public void handleError(Throwable throwable) {
   logger.error("Schedule task throw exception msg is {}");
   throwable.printStackTrace();
}
时间: 2024-08-02 09:52:19

Spring Schedule task 添加 error-hander的相关文章

Spring Shedule Task之注解实现 (两次启动Schedule Task 的解决方案)

在spring 中的新引入的task 命名空间.可以部分取代 quartz 功能,配置和API更加简单,并且支持注解方式. 第一步: 在Spring的相关配置文件中(applicationContext.xml或者是{project_name}_servelt.xml或者是独立的配置文件如XXX_quartz.xml)中配置并开启Spring Schedule Task.注意其中高亮的部分是必须的. 1 <?xml version="1.0" encoding="UTF

spring schedule定时任务(一):注解的方式

我所知道的java定时任务的几种常用方式: 1.spring schedule注解的方式: 2.spring schedule配置文件的方式: 3.java类继承TimerTask: 第一种方式的实现: 1.使用maven创建spring项目,schedule在spring-context.jar的包下边,因此需要导入与之相关的包:同时,我配的是spring web项目,也同时导入了spring-web和spring-webmvc的包,如下: <dependency> <groupId&

任务调度(02)Spring Schedule

任务调度(02)Spring Schedule [toc] Spring 3.0 提供两种任务调度方式:一是定时任务调度:二是异步任务调度.这两种任务调度方式都是基于 JUC 实现的,是一种非常轻量级的任务调度方式.同时在 spring-context-support 中也整合了 Quartz,文本重点关注 Spring 提供了原生任务调度方式 - @EnableScheduling 和 @EnableAsync. 定时任务调度和异步任务调度的基本使用方法. 定时任务调度的源码分析.Schedu

Windows的定时任务(Schedule Task)设置

一.设置1 点击"开始"2 点击"控制面板"3 双击"任务计划"4 双击"添加任务计划"5 到了"任务计划向导"界面,点击"下一步"6 点击"浏览"选择需要定时运行的程序(exe文件,bat文件,com文件,sys文件)然后确定.7 给此任务取个名称,也可以默认,并且选择多少时间段运行一次程序,点击"下一步"8 选择什么时刻运行,开始运行日期.点击

Spring Cloud Task

Spring Cloud Task 1.0.3.RELEASE 和 1.1.0.M1 发布了.Spring Cloud 为开发者提供了在分布式系统(如配置管理.服务发现.断路器.智能路由.微代理.控制总线.一次性 Token.全局锁.决策竞选.分布式会话和集群状态)操作的开发工具(基础教程qkxue.net).使用 Spring Cloud(app开发公司ty300.com) ,开发者可以快速实现上述这些模式. Spring Cloud Task 1.0.3.RELEASE的更新是一个小更新,包

C# Windows Schedule task之获取task下次运行时间

最近做了一个需要和Windows Schedule task相关的功能,即通过schedule,计算下次跑task的时间. 通过是用第三方的DLL来实现,从下面的网站下载: http://taskscheduler.codeplex.com/ 1. 在Schedule Task里增加一个task,命名为"testJing", trigger设置为每五天 增加一个Trigger,如下图: 2. 使用VS2012,创建一个Console Application,命名为ScheduleTas

SSIS Error The Execute method on the task returned error code 0x80131621

Error Message: The Execute method on the task returned error code 0x80131621 (Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.). The Execute

SpringBoot之旅 -- 定时任务两种(Spring Schedule 与 Quartz 整合 )实现

相关文章 Spring Boot 相关文章目录 前言 最近在项目中使用到定时任务,之前一直都是使用Quartz 来实现,最近看Spring 基础发现其实Spring 提供 Spring Schedule 可以帮助我们实现简单的定时任务功能.下面说一下两种方式在Spring Boot 项目中的使用. Spring Schedule 实现定时任务 Spring Schedule 实现定时任务有两种方式 1. 使用XML配置定时任务, 2. 使用 @Scheduled 注解. 因为是Spring Bo

SpringBoot系列:Spring Boot定时任务Spring Schedule

Spring Schedule是Spring提供的定时任务框架,相较于Quartz,Schedule更加简单易用,在中小型应用中,对于大部分需求,Schedule都可以胜任. 一.Spring Schedule使用演示 在 SpringBoot使用Spring Schedule非常简单,因为SpringBoot自身的starter中已经集成了Schedule,而不需要我们做更多的处理. 使用@EnableScheduling注解开启定时功能,该注解可以使用在启动类上,也可以注解于定时任务的类上.