Dra-M Dra-M
首页
技术
冥思
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

莫小龙

保持理智,相信未来。
首页
技术
冥思
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Java基础

  • Spring

  • 微服务

    • Oauth2+Gateway+JWT+RSA 解决微服务单点登录问题
    • SpringBoot RabbitMQ 快速启动
    • Spring Task fixedDelayString不能随着配置中心动态变化的问题
    • K8S远程调用小记
    • 新版SpringCloudSteam+Kafka 更加简单的配置消息收发
  • Elasticsearch

  • 实用工具

  • Bash

  • DevOps系列

  • 技术
  • 微服务
莫小龙
2020-08-12

Spring Task fixedDelayString不能随着配置中心动态变化的问题

在SpringBoot项目中可以通过@Scheduled(fixedDelayString = "${time}")读取配置中心内容创建一个定时任务,但当值变化时任务不会跟着创建,

要让值跟着变需要手动配置:

@Configuration
//开启定时任务
@EnableScheduling
//实现SchedulingConfigurer接口
public class SchedulingConfig implements SchedulingConfigurer {
  //实现runable的定时任务对象
  @Autowired private GetIncrementJob getIncrementJob;

  private Long time;
  //从配置中读取
  @Value("${time}")
  public void setTime(Long time) {
    this.time = time;
  }

  //配置定时任务
  @Override
  public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
    //使用触发器做定时,实现nextExecutionTime方法,在任务结束时会调用这个方法获取下一次执行的时间。
    //每次的值都是根据time重新计算的,在time变化后下一次执行时间也就变了。
    Trigger trigger =
        new Trigger() {
          @Override
          public Date nextExecutionTime(TriggerContext triggerContext) {
            // 下一次执行时间
            return new Date(System.currentTimeMillis() + time);
          }
        };
    //添加任务
    scheduledTaskRegistrar.addTriggerTask(getIncrementJob, trigger);
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

#Java#Task#配置中心
上次更新: 3/5/2021
SpringBoot RabbitMQ 快速启动
K8S远程调用小记

← SpringBoot RabbitMQ 快速启动 K8S远程调用小记→

最近更新
01
易混淆哲学用语释义
04-13
02
前言:搭建一套自有的围绕K8S的DevOps工具
04-11
03
部署K8S -- kubeasz
04-11
更多文章>
Theme by Vdoing | Copyright © 2019-2022 Dra-M | 冀ICP备2021002204号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式