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

莫小龙

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

  • Golang

  • 编程思想

  • 微服务

    • SpringCloud

      • SpringBoot RabbitMQ 快速启动
      • Spring Task fixedDelayString不能随着配置中心动态变化的问题
      • 新版SpringCloudSteam+Kafka 更加简单的配置消息收发
    • Kubernetes

    • Oauth2+Gateway+JWT+RSA 解决微服务单点登录问题
  • 中间件

  • Python

  • 运维

  • 技术
  • 微服务
  • SpringCloud
莫小龙
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#配置中心
上次更新: 10/23/2024
SpringBoot RabbitMQ 快速启动
新版SpringCloudSteam+Kafka 更加简单的配置消息收发

← SpringBoot RabbitMQ 快速启动 新版SpringCloudSteam+Kafka 更加简单的配置消息收发→

最近更新
01
mosquito配置ws协议
10-23
02
Pip包的离线下载和安装
10-23
03
stable diffusion 相关收藏
02-24
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Dra-M
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式