美文网首页
定时任务调度之Spring-Task

定时任务调度之Spring-Task

作者: 跳动的字符 | 来源:发表于2018-03-23 17:45 被阅读0次

 之前一直使用Quartz定时调度框架,感觉其配置起来太繁锁,近期决定采用Spring-Task作为任务调度框架,因为其配置简单,灵活,易维护的特点。具体使用步骤如下:
在之前的spring.xml文件中增加配置项,在<beans>中增加如下配置项:

<beans 
    xmlns:task="http://www.springframework.org/schema/task" 
    xsi:schemaLocation="
    http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">

在beans节点里如下配置项:

    <!-- 自动扫描包 -->
    <context:component-scan base-package="com.hp.*.timer" />

    <!-- 如采用注解方式,则需配置此项 -->
    <task:annotation-driven scheduler="myScheduler"/><!-- 启用注解驱动的定时任务 -->
    <task:scheduler id="myScheduler" pool-size="5"/><!-- 配置定时任务的线程池(多线程时配置此项))-->
    
    <!-- 配置定时任务时间(如采用注解方式,则无需配置此项) -->
    <task:scheduled-tasks>
        <task:scheduled ref="openAccJob" method="execute" cron="0 0/1 * * * ?"/>
    </task:scheduled-tasks>

说明:1、理论上只需加上<task:annotation-driven />就可以了,参数都不是必须的;
   2、ref指定的即任务类,method指定的即需要运行的方法,cron表达式与quartz一样。

定时任务调度类(配置形式),代码如下:

package com.hp.pay.timer;

/**
 * 查询服务
 * 
 * @author Tom.Liao
 * @date 2018-03-20
 * @version 1.0.0
 */
@Service
public class OpenAccJob {

    private static final Logger log = Logger.getLogger(OpenAccJob.class);
    
    /**
     * 定时调度入口
     */
    public void execute() {
        log.info("openAcc query job startTime:" + DateUtils.getCurrentDate("yyyy-MM-dd HH:mm:ss"));
        try {
            /// 此处代码省略
        } catch (Exception e) {
            log.error("查询时出错:" + e.getMessage(), e);
        }
        log.info("openAcc query job endTime:" + DateUtils.getCurrentDate("yyyy-MM-dd HH:mm:ss"));
    }
}

定时任务调度类(注解形式),代码如下

package com.hp.pay.timer;

/**
 * 查询服务
 * 
 * @author Tom.Liao
 * @date 2018-03-20
 * @version 1.0.0
 */
@Component(“openAccJob”)
public class OpenAccJob {

    private static final Logger log = Logger.getLogger(OpenAccJob.class);

    /**
     * 定时调度入口
     */
    @Scheduled(cron = "0 0/1 * * * ?")
    public void execute() {
        log.info("openAcc query job startTime:" + DateUtils.getCurrentDate("yyyy-MM-dd HH:mm:ss"));
        try {
            /// 此处代码省略
        } catch (Exception e) {
            log.error("查询时出错:" + e.getMessage(), e);
        }
        log.info("openAcc query job endTime:" + DateUtils.getCurrentDate("yyyy-MM-dd HH:mm:ss"));
    }
}

但Spring-Task不支持分布式,分布式定时调度还得用 quartz,开源的分布式任务调度框架有:opencronLTSXXL-JOBElastic-Job 等。

相关文章

  • 定时任务调度之Spring-Task

     之前一直使用Quartz定时调度框架,感觉其配置起来太繁锁,近期决定采用Spring-Task作为任务调度框架,...

  • Java定时任务调度工具详解

    本篇内容:什么是定时任务调度?Java定时任务调度工具详解之 Timer篇Java定时任务调度工具详解之 Quar...

  • 定时任务调度之Timer

    定时任务调度之Timer 前言 定时任务调度,有两个比较重要的概念,一个是定时,一个是调度,所谓的定时调度,指的是...

  • 学习Linux2

    linux 学习2 定时任务管理 crond 任务调度 crontab 进行 定时任务的设置 概述任务调度:是指系...

  • Spring定时调度器原理

    定时调度器主要是负责一些定时任务的调度,

  • 定时任务框架Quartz

    定时任务框架! 定时任务就是分为三个模块:任务、触发器、调度器 过程就是,调度器协调触发器来再固定时间去触发任务!

  • 关于任务定时调度

    Tags:定时作业调度 分布式定时任务调度 Quartz TBSchedule Elastic-job 基于给定...

  • crond任务调度(定时任务调度)

    基本语法crontab [选项]选项-e : 编辑crontab定时任务-l : 查询crontab定时任务...

  • Linux任务调度

    crond任务调度 crontab用于定时任务的设置。任务调度:是指系统在某个时间执行的特定的命令或程序。任务调度...

  • 延时队列-基于RabbitMq延时消息插件实现的延时队列

    前言 定时调度基本是每个项目都会遇到的业务场景,一般地,都会通过任务调度工具执行定时任务完成,定时任务有两点缺陷,...

网友评论

      本文标题:定时任务调度之Spring-Task

      本文链接:https://www.haomeiwen.com/subject/trmxcftx.html