zoukankan      html  css  js  c++  java
  • springboot整合springtask

    在使用 springmvc 中,一般的定时任务是使用 job 或者 quartz 或者timer来实现,但是使用它们的时候比较麻烦,会在 xml 文件中配置很多,

    springboot 的定时任务比较简单。

    1、在 application 启动类中使用 @EnableScheduling 注解开启定时任务,会自动扫描,相当于一个开关,把这个开关开完之后,那么只要在相应的任务类中做相应的任务,那么就会被 spring boot 容器扫描到,扫描到后,根据任务定义的时间

    会自动运行

    @SpringBootApplication
    @EnableScheduling
    public class SpringbootredisApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringbootredisApplication.class, args);
        }
    
    }

    2 配置组件

    package com.cxy.config;
    
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    
    import java.util.Date;
    
    @Component
    public class TaskTest {
        @Scheduled(cron = "*/1 * * * * ?")
        public  void po(){
            System.out.println(System.currentTimeMillis());
        }
    }

    控制台输出

    除了支持cron表达式之外还支持:

    @Component
    public class TaskTest {
    //    @Scheduled(cron = "*/1 * * * * ?")
    //    public  void po(){
    //        System.out.println(System.currentTimeMillis());
    //    }
    
        @Scheduled(fixedRate = 1000)
        public  void po(){
            System.out.println(System.currentTimeMillis());
        }
    }

    执行结果:

    fixedRate: 上一次 启动时间点之后 X秒执行一次 

    fixedDelay: 上一次 结束时间点之后 每X秒执行一次

    initialDelay: 第一次延迟 X秒执行,之后按照fixedRate的规则每X秒执行 

    但是springtask任务在分布式的时候会存在问题:部署多台服务之后,到底哪个服务器执行呢,那么就应该思考代码问题,不管不是timer,还是quatz等都是存在问题的,这种问题可以采用一下来执行:

    1 可以选择代码分离进行单台部署,

    2 可以选择redis分布式锁,让一台服务拿到相应的key之后去执行

    3 使用zookeeper分布式锁获取单个锁,

    如果别人问道这个问题,我们应该知道,清晰代码思路,确实我在之前项目是单台tomcat部署的,所有使用的是这个springtask作为定时任务,只是存在如果节点宕机之后就会出现

    问题,所以可以去学习分布式任务进行整合,例如xxl-job

  • 相关阅读:
    编写有效用例_阅读笔记05
    编写有效用例_阅读笔记04
    编写有效用例_阅读笔记03
    编写有效用例_阅读笔记02
    软件需求与分析课堂讨论一
    编写有效用例_阅读笔记01
    问题账户需求分析
    【知识总结】动态 DP
    【知识总结】数论全家桶
    【知识总结】多项式全家桶(三点五)(拆系数解决任意模数多项式卷积)
  • 原文地址:https://www.cnblogs.com/xiufengchen/p/10327609.html
Copyright © 2011-2022 走看看