zoukankan      html  css  js  c++  java
  • Spring Boot

    • 有时应用需要定时(如凌晨)执行一些任务(比如计算一些数据并存下来留给后续使用)
    • 使用
      • 使用@EnableScheduling注解启用Scheduling功能:不一定要标注在启动类上,也可以标注在@Configuration配置类上
      • 方法上加@Scheduled注解,方法会按照参数定期执行
    • @Scheduled参数
      • zone:设置时区,按照时区定时运行
      • cron:值为字符串,按照时钟定时运行
        • 字符串至少包含六部分(在字符串中用空格间隔开)
          • 秒(0~59),支持, - * /
          • 分(0~59),支持, - * /
          • 小时(0~23),支持, - * /
          • 日(1~31),支持, - * ? / L W
          • 月(112或JANDEC),支持, - * /
          • 星期几(17或SUNSAT),支持, - * ? / L #
          • 年(可为空,空表示任意年),支持, - * /
        • 例如cron-"0 0 0 * * ?"
      • fixedDelay:以固定的频率执行,单位为毫秒,方法休息的间隔时间是相同的
      • fixedRate:以固定的频率执行,单位为毫秒,方法启动的间隔时间是相同的
        • 方法的注解参数可以使用配置文件变量和默认值,如:@Scheduled(fixedRateString = "${assets.cache.refresh.rate:900000}")
      • initialDelay:和上面的三个参数搭配使用,不能单独使用,单位为毫秒,首次执行延时
    • 默认只有一个线程在执行scheduled任务
      • 如果有两个方法在同一时刻执行,那么第二个其实是执行不了的,但是这个配置是可以改的,新建一个@Configuration的类继承自SchedulingConfigurer接口,重写configureTasks类,可以新建和设置一个ThreadPoolTaskScheduler。
    • 注意在集群/负载均衡环境下,要想办法避免多个实例都执行了定时任务,会混乱
      • 可以单独出来只有一个服务器执行定时任务,但缺点是它挂了以后,就没有了,也就是没有使用集群/负载均衡的高可用功能了
      • 使用Quartz Scheduler
  • 相关阅读:
    2011年上半年软考信息系统项目管理师顺利通过了。
    技术工程师之歌
    大家都很注重能力的时候,我却在努力提高学历
    新的开发团队配合模式,适合小型团队
    研发部的四套马车
    mysql给root开启远程访问权限,修改root密码
    js客户端判断文件大小限制上传
    metro 微博api开发,post请求
    VS2010在C#头文件添加文件注释的方法
    android ListView 常见问题 之 高度问题
  • 原文地址:https://www.cnblogs.com/wyp1988/p/10359917.html
Copyright © 2011-2022 走看看