zoukankan      html  css  js  c++  java
  • Quartz定时任务

    Quartz定时任务

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。

    原理图

    springboot整合Quartz

    1. 依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-quartz</artifactId>
    </dependency>
    

    2.配置

    @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();
    	}
    }
    

    3.任务执行类

    @Component
    public class OrderQuartz extends QuartzJobBean{
    
    	@Autowired
    	private OrderMapper orderMapper;
    
    	/**当用户订单提交30分钟后,如果还没有支付.则交易关闭
    	 * 现在时间 - 订单创建时间 > 30分钟  则超时
    	 * new date - 30 分钟 > 订单创建时间
    	 */
    	@Override
    	@Transactional
    	protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
    		//设定30分钟超时
    		Calendar calendar = Calendar.getInstance();
    		calendar.add(Calendar.MINUTE, -30);
    		Date date = calendar.getTime();
    		Order order = new Order();
    		order.setStatus(6);
    		order.setUpdated(new Date());
    		UpdateWrapper<Order> updateWrapper = new UpdateWrapper<>();
    		updateWrapper.eq("status", "1").lt("created",date);
    		orderMapper.update(order, updateWrapper);
    		System.out.println("定时任务执行");
    	}
    }
    
  • 相关阅读:
    第九次作业
    第八次作业
    第七次作业
    组合数学—递推关系与母函数
    组合数学—排列组合
    三角函数
    OpenCV初步
    计算机视觉如何入门
    GDB调试技巧:总结篇
    PyQt5之窗口类型
  • 原文地址:https://www.cnblogs.com/zpKang/p/13563054.html
Copyright © 2011-2022 走看看