Quartz定时任务

简介: Quartz定时任务

引入依赖

<!--添加Quartz的支持 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-quartz</artifactId>
    </dependency>

编辑配置文件

import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.jt.quartz.OrderQuartz;
@Configuration
public class OrderQuartzConfig {
  
  //定义任务详情
  @Bean
  public JobDetail orderjobDetail() {
    //指定job的名称和持久化保存任务
    return JobBuilder
        .newJob(OrderQuartz.class)
        .withIdentity("orderQuartz")
        .storeDurably()
        .build();
  }
  //定义触发器
  @Bean
  public Trigger orderTrigger() {
    /*SimpleScheduleBuilder builder = SimpleScheduleBuilder.simpleSchedule()
        .withIntervalInMinutes(1) //定义时间周期
        .repeatForever();*/
    CronScheduleBuilder scheduleBuilder 
      = CronScheduleBuilder.cronSchedule("0 0/1 * * * ?");
    return TriggerBuilder
        .newTrigger()
        .forJob(orderjobDetail())
        .withIdentity("orderQuartz")
        .withSchedule(scheduleBuilder).build();
  }
}

编辑具体任务

import java.util.Calendar;
import java.util.Date;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.jt.mapper.OrderMapper;
import com.jt.pojo.Order;
//准备订单定时任务
@Component  //orderQuartz
public class OrderQuartz extends QuartzJobBean{
  @Autowired
  private OrderMapper orderMapper;
 
  
  /**
   * 将超时30分钟的订单状态码由1改为6
   * 条件:  //now - created >  30分钟 
   *     created < now-30分钟
   *     and status = 1
   */
  @Override
  @Transactional
  protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
    //获取当前时间的日历对象
    Calendar calendar = Calendar.getInstance();
    //毫秒/秒/分钟/小时/天/月/年/星期
    calendar.add(Calendar.MINUTE, -30);
    //获取超时时间
    Date timeOut = calendar.getTime();
    Order order = new Order();
    order.setStatus(6).setUpdated(new Date());
    UpdateWrapper<Order> updateWrapper = new UpdateWrapper<>();
    updateWrapper.lt("created",timeOut);
    updateWrapper.eq("status", 1);
    orderMapper.update(order, updateWrapper);
    System.out.println("定时任务执行完成!!!!");
  }
}
目录
相关文章
|
NoSQL Java Maven
Quartz定时任务组件
Quartz定时任务组件
102 0
|
7月前
|
Java Spring 容器
SpringBoot 使用Quartz执行定时任务对象时无法注入Bean问题
SpringBoot 使用Quartz执行定时任务对象时无法注入Bean问题
268 1
|
7月前
|
SQL Java 调度
SpringBoot 整合 Quartz 定时任务框架
SpringBoot 整合 Quartz 定时任务框架
158 0
SpringBoot定时任务 注解方式开启
SpringBoot定时任务 注解方式开启
SpringBoot定时任务 注解方式开启
|
Oracle NoSQL Java
Springboot Quartz定时任务的动态调度使用,实战详解
Springboot Quartz定时任务的动态调度使用,实战详解
519 0
Springboot Quartz定时任务的动态调度使用,实战详解
|
开发框架 Java 应用服务中间件
spring整合quartz框架
在一些项目中,往往需要定时的去执行一些任务,比如商城项目,每天0点去统计前一天的销量。那么如何实现呢,总不可能我们每天0点手动的去执行统计销量的方法吧,这时就quartz就起作用了。
spring整合quartz框架
|
Java API 调度
quartz定时任务
quartz定时任务
179 0
|
XML Java 数据处理
Spring整合quartz定时任务
Spring整合quartz定时任务
588 0
|
Java 调度 存储
SpringBoot整合Quartz定时任务 的简单实例 2
(1)什么是Quartz?(2)Quartz的特点;(3)Quartz专用词汇说明;(4)Quartz任务调度基本实现原理;          接下来看下具体的内容: (1)什么是Quartz? Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。
1629 0