91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot實現動態更新任務的方法

發布時間:2020-09-10 05:46:39 來源:腳本之家 閱讀:396 作者:huanxi 欄目:編程語言

前言

SpringBoot 實現動態 Job,可以通過 API 動態變更 cron。

原生的 Job 實現起來很簡單,只要用注解 @Scheduled(cron=xxxxxx) 來實現就可以了,但是要實現動態更改 cron ,就需要做點其他的了。

實現方法

在 pom.xml 中添加 quartz-scheduler

<dependency>
 <groupId>org.quartz-scheduler</groupId>
 <artifactId>quartz</artifactId>
 <version>2.2.3</version>
</dependency>

在 application.yml 中增加 cron ,默認一秒鐘執行一次

cron:
 pattern: 0/1 * * * * ?

創建 DynamicScheduledTask.java

public class DynamicScheduledTask implements SchedulingConfigurer {
 @Value("${cron.pattern}")
 public String pattern;
 public void setCron(String cron) {
 this.pattern = cron;
 }
 @Override
 public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
 taskRegistrar.addTriggerTask(new Runnable() {
  @Override
  public void run() {
  doBiz();
  }
 }, new Trigger() {
  @Override
  public Date nextExecutionTime(TriggerContext triggerContext) {
  // 定時任務觸發,可修改定時任務的執行周期
  CronTrigger trigger = new CronTrigger(pattern);
  Date nextExecDate = trigger.nextExecutionTime(triggerContext);
  return nextExecDate;
  }
 });
 }
 public void doBiz() {
 // do your biz
 System.out.println("do biz...");
 }
}

在 Application.java 中增加 @EnableScheduling 注解

這樣,運行 Application.java 就會每隔一秒執行 Job 了。

如果要實現特定的邏輯,可以繼承 DynamicScheduledTask.java,重寫 doBiz() 方法。

UserDynamicJob.java

@Component
public class UserDynamicJob extends DynamicScheduledTask {
 @Autowired
 IUserService userService;
 @Override
 public void doBiz() {
 Map<String, Object> params = new HashMap<>();
 try {
  User user = userService.selectOne(params);
  System.out.println(user);
 } catch (DataNotFoundException e) {
  e.printStackTrace();
 }
 }
}

寫到這里,其實還沒有實現動態更改 cron 表達式。

接下來我們可以通過 api 來動態更改。

在我們的 Controller 中,增加一個方法

@PostMapping(value = "/cron")
 public String changeDynamicCron(String cron) {
 userDynamicJob.setCron(cron);
 return "Success";
 }

這樣,通過調用 localhost:8080/corn?corn=0/10 * * * * ?

就可以實現每 10 秒執行一次了。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

措美县| 彭阳县| 诸暨市| 民县| 淳安县| 乌鲁木齐县| 秦安县| 彭阳县| 武安市| 通渭县| 太保市| 东海县| 政和县| 巴南区| 老河口市| 库尔勒市| 民和| 霍城县| 武义县| 横峰县| 汝阳县| 柘荣县| 隆安县| 新龙县| 乃东县| 黔江区| 定陶县| 旅游| 女性| 黎川县| 家居| 聊城市| 呼伦贝尔市| 灵寿县| 广南县| 麻城市| 新巴尔虎右旗| 天柱县| 临朐县| 翼城县| 铜鼓县|