SpringBoot 动态修改定时任务频率

摘要:
原文:https://cloud.tencent.com/developer/article/1627714importorg.springframework.beans.factory.annotation.Autowired ; 导入组织弹簧框架文本注释。豆进口弹簧框架车

原文:https://cloud.tencent.com/developer/article/1627714

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;
import java.util.concurrent.ScheduledFuture;


@RestController
@RequestMapping(value = "test")
public class TestController {

    @Autowired
    private ThreadPoolTaskScheduler threadPoolTaskScheduler;

    private ScheduledFuture<?> future;

    // 线程池任务调度类
    @Bean
    public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
        return new ThreadPoolTaskScheduler();
    }

    private String cronStr = "0/5 * * * * *";

    @RequestMapping("/start")
    public String startCron() {
        // 创建定时计划
        future = threadPoolTaskScheduler.schedule(new MyRunnable(), new Trigger(){
            @Override
            public Date nextExecutionTime(TriggerContext triggerContext){
                return new CronTrigger(cronStr).nextExecutionTime(triggerContext);
            }
        });
        System.out.println("DynamicTask.startCron()");
        return "startCron";
    }

    @RequestMapping("/stop")
    public String stopCron() {

        if (future != null) {
            future.cancel(true);
        }
        System.out.println("DynamicTask.stopCron()");
        return "stopCron";
    }

    @PostMapping("/change")
    public String changeCron(@RequestBody String cron) {
        cronStr = cron;
        // 先停止,在开启
        stopCron();
        future = threadPoolTaskScheduler.schedule(new MyRunnable(), new Trigger(){
            @Override
            public Date nextExecutionTime(TriggerContext triggerContext){
                return new CronTrigger(cronStr).nextExecutionTime(triggerContext);
            }
        });
        System.out.println("DynamicTask.changeCron()");
        return "changeCron";
    }

    private class MyRunnable implements Runnable {
        @Override
        public void run() {
            System.out.println("DynamicTask.MyRunnable.run()," + new Date());
        }
    }
}

调试情况如下:

1.调用start

2.调用change,并传入0/3 * * * * *

3.调用stop

SpringBoot 动态修改定时任务频率第1张

免责声明:文章转载自《SpringBoot 动态修改定时任务频率》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇详解Javahome 与 Path 与ClassPath的含义 (转)Linux kill -9 和 kill -15 的区别下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

RSA加密与解密

数据信息安全对我们每个人都有很重要的意义,特别是一些敏感信息,可能一些类似于收货地址、手机号还没引起大家的注意。但是最直白的,银行卡、姓名、手机号、身份证号,如果这些信息被黑客拦截到,他就可以伪装成你,把你的钱都取走。那我们该怎么防止这样的事情发生?报文加密解密,加签验签。 我害怕什么 我害怕卡里的钱被别人取走 我害怕转账的时候,报文被黑客拦截到,篡改信息...

Spring中RestTemplate的使用方法

一、REST 在互联网中,我们会通过请求url来对网络上的资源做增删改查等动作,这里的请求包含两部分:动词,主要包括增、删、改、查;名词,就是网络中的各种资源。传统的非REST风格的请求方式是把动词和名词全都放在url中。例如,对设备的操作可能是这样的:添加设备:http://test/device/add删除设备:http://test/device/d...

C# 基本数据类型

Ø  前言 每个编程语言都有基本的数据类型,例如 C、C++、Java、Python、PHP、JavaScript、以及各种数据库等,而 C# 也不例外。本篇主要讨论 C# 中的一些常用的基础数据类型。   1.   值类型 Ø  值类型隐式继承于 System.ValueType,而 System.ValueType 隐式继承于 System.Objec...

Redis设置过期时间

一般添加值之后,不设置过期时间的话,ttl某个键会显示-1,表示此时并没有设置过期时间 当设置了过期时间之后,则会显示剩余过期秒数 设置过期时间的做法 #region 设置过期时间 //设置多少秒 client.Set<string>("name",...

golang查找端口号占用的进程号

golang官方包: https://studygolang.com/pkgdoc os 支持获取当前进程pid并kill、但是仅仅限于获取当前进程pid FindProcess().Kill() os.Getpid() 基础用法;但是却没有提供依据端口号获取对应的pid,所以还是执行shell指令对结果集进行过滤获取pid // 获取8299端口对应进程...

MailKit和MimeKit的.NET基础邮件服务

MailKit和MimeKit的.NET基础邮件服务邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦。.NET对于邮件功能提供了System.Net.Mail用于创建邮件服务,该基础服务提供邮件的基础操作,并且使用也较为的简单。对于真正将该功能使用于项目的人,就会慢慢发现其中的优缺点,甚至有些时候不能忍受...