Spring task 定时任务实践


  需求:

      每天的早上7点定时扫描表里的数据,符合条件的数据将会被发送到相应人员的邮箱当中。

  分析:

      实现定时任务技术上有好多选择:

1· Java自带的java.util.Timer类:这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。

2.使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂,稍后会详细介绍。

3.Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,本篇博客主要介绍这种方案。


    本文介绍Spring3.0以后自主开发的定时任务工具,spring task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需要额外的包。

    另外,springtask支持注解和配置文件两种方式。这里以配置文件方式示例。


步骤:第一步:配置spring配置文件:

首先,命名空间需要添加有关内容:

 <beans xmlns="http://www.springframework.org/schema/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">

   其次,配置文件中设置具体的任务:

<task:scheduled-tasks>
   <task:scheduled ref="taskJob" method="job1" cron="0 * * * * ?"/>
   <!--<task:scheduled ref="taskJob" method="job1" cron="0 0 7 * * ?"/>-->
</task:scheduled-tasks>

    说明:ref参数指定的即任务类,method指定的即需要运行的方法,croncr即onExpression表达式,具体写法这里不介绍了,详情见附录。<context:component-scan base-package="com.gy.mytask" />。


    第二步:编写需要执行任务的类:

package com.bms.service;/**
 * Created by 贾丽敏 on 2017/5/22.
 */
import com.bms.mapper.TbOrderMapper;
import com.bms.pojo.TbOrderEmail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* 
* @author 
* @create 2017-05-22 20:11
**/
@Service
public class TaskJob {
@Autowired
    private TbOrderMapper tbOrderMapper;
@Autowired
    private SendMail sendMail;
public void job1(){
        try {
            List<TbOrderEmail> orderEmailList =getOrderEmail();//封装的具体执行任务的代码
            for (TbOrderEmail orderEmail:orderEmailList){
                sendMail.sendMail(orderEmail);
            }
            System.out.println("发送邮件成功");
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

    大致内容就这么多,还有一种注解方式,原理一样,大家也可以尝试一下。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Spring Cloud TaskSpring Cloud 生态系统中的一个分布式任务调度框架,可以用于定时任务、批量处理任务等场景。下面介绍一下 Spring Cloud Task 的使用流程: 1. 添加依赖:在项目的 pom.xml 文件中添加 Spring Cloud Task 的依赖。 ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-task</artifactId> </dependency> ``` 2. 配置任务:创建一个任务类,使用 @EnableTask 注解启用任务,使用 @Scheduled 注解定义任务执行的时间和频率。 ``` @EnableTask @SpringBootApplication public class MyTask { @Scheduled(fixedRate = 5000) public void myTask() { System.out.println("My task is running..."); } public static void main(String[] args) { SpringApplication.run(MyTask.class, args); } } ``` 3. 配置数据库:使用 Spring Cloud Task 需要配置一个数据库来存储任务信息和执行记录,可以使用 MySQL、PostgreSQL 等数据库。在配置文件中添加数据库连接信息。 ``` spring.datasource.url=jdbc:mysql://localhost:3306/mytask?useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 4. 运行任务:使用命令行或者 Web 界面来启动和管理任务。在命令行中执行以下命令启动任务: ``` java -jar mytask.jar --spring.cloud.task.closecontextEnabled=false ``` 5. 监控任务:Spring Cloud Task 提供了多种监控任务的方式,可以通过 Actuator、Spring Batch 等方式来监控任务的执行情况。 以上是 Spring Cloud Task 的简单使用流程,需要注意的是,在使用过程中需要考虑任务的并发、任务的失败处理、任务的日志记录等问题,需要有一定的技术储备和实践经验。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值