国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

SpringBoot 設置動態定時任務

IT那活兒 / 1624人閱讀
SpringBoot 設置動態定時任務

點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!??!

在我們平時開發的過程中,定時任務的使用很常見,SpringBoot 定時任務是SpringBoot框架自帶而且很容易上手的。一般cron表達式都是在配置文件中配置或者直接寫死,這樣就會顯得比較死板,那么我分享一下我最近學到的動態使用SpringBoot 定時任務。
這里我們直接上代碼,在配置文件application.yml中配置好初始cron表達式。
讓定時任務跑起來,下圖可以看出定時任務是我們正常配置的10s跑一次。

態配置定時任務--CronTrigger

下面我們開始進行動態配置定時任務,上代碼:
package com.shsnc.test;

import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.scheduling.support.PeriodicTrigger;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.Date;

/**
* @Author: duanxichao
* @CreateTime: 2022-10-20 10:38
* @Description: TODO
*/

@Data
@Component
public class TestScheduleTask implements SchedulingConfigurer {

   private static final Logger logger = LoggerFactory.getLogger(SchedulingConfigurer.class);

   @Value("${scheduled.testCron}")
   private String cron;

   private Long timer = 10000L;

   @Override
   public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
       // 動態使用cron表達式設置循環間隔
       taskRegistrar.addTriggerTask(new Runnable() {
           @Override
           public void run() {
               logger.info("Current time:{}", LocalDateTime.now());
           }
       }, new Trigger() {
           @Override
           public Date nextExecutionTime(TriggerContext triggerContext) {
               // 使用CronTrigger觸發器,可動態修改cron表達式來操作循環規則
               CronTrigger cronTrigger = new CronTrigger(cron);
               Date nextExecutionTime = cronTrigger.nextExecutionTime(triggerContext);

               // 使用不同的觸發器,為設置循環時間的關鍵,區別于CronTrigger觸發器,該觸發器可隨意設置循環間隔時間,單位為毫秒
// PeriodicTrigger periodicTrigger = new PeriodicTrigger(timer);
// Date nextExecutionTime = periodicTrigger.nextExecutionTime(triggerContext);
               return nextExecutionTime;
           }
       });
   }
}
以上是第一種動態配置定時任務代碼,使用的是CronTrigger觸發器。
下面寫一個接口測試一下效果:
接口如圖:

此上圖我們可以看出定時任務已經從最開始的10s執行一次變成了20s執行一次。這樣我們就完成了定時任務時間的修改。

態配置定時任務--PeriodicTrigger

還以一種方式可以通過時間去修改的,可以不使用cron表達式,下面上代碼:
package com.shsnc.test;

import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.scheduling.support.PeriodicTrigger;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.Date;

/**
* @Author: duanxichao
* @CreateTime: 2022-10-20 10:38
* @Description: TODO
*/

@Data
@Component
public class TestScheduleTask implements SchedulingConfigurer {

   private static final Logger logger = LoggerFactory.getLogger(SchedulingConfigurer.class);

   @Value("${scheduled.testCron}")
   private String cron;

   private Long timer = 10000L;

   @Override
   public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
       // 動態使用cron表達式設置循環間隔
       taskRegistrar.addTriggerTask(new Runnable() {
           @Override
           public void run() {
               logger.info("Current time:{}", LocalDateTime.now());
           }
       }, new Trigger() {
           @Override
           public Date nextExecutionTime(TriggerContext triggerContext) {
               // 使用CronTrigger觸發器,可動態修改cron表達式來操作循環規則
// CronTrigger cronTrigger = new CronTrigger(cron);
// Date nextExecutionTime = cronTrigger.nextExecutionTime(triggerContext);

               // 使用不同的觸發器,為設置循環時間的關鍵,區別于CronTrigger觸發器,該觸發器可隨意設置循環間隔時間,單位為毫秒
               PeriodicTrigger periodicTrigger = new PeriodicTrigger(timer);
               Date nextExecutionTime = periodicTrigger.nextExecutionTime(triggerContext);
               return nextExecutionTime;
           }
       });
   }
}
PeriodicTrigger觸發器區別于CronTrigger觸發器,該觸發器可隨意設置循環間隔時間,單位為毫秒,此處我設置61s,我們寫個接口來看下效果:
上圖我們可以看出定時任務時間變成了61s執行一次。
是不是很簡單,兩個觸發器相比較而言,對于分鐘、秒級別的我更喜歡用PeriodicTrigger觸發器,而CronTrigger觸發器顯得更加專業一點
如果你也學會了那就趕緊用起來吧。


本文作者:段席超(上海新炬王翦團隊)

本文來源:“IT那活兒”公眾號

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129180.html

相關文章

  • SpringBoot中并發定時任務的實現、動態定時任務的實現(看這一篇就夠了)

    摘要:也是自帶的一個基于線程池設計的定時任務類。其每個調度任務都會分配到線程池中的一個線程執行,所以其任務是并發執行的,互不影響。 原創不易,如需轉載,請注明出處https://www.cnblogs.com/baixianlong/p/10659045.html,否則將追究法律責任!??! 一、在JAVA開發領域,目前可以通過以下幾種方式進行定時任務 1、單機部署模式 Timer:jdk中...

    BWrong 評論0 收藏0
  • springboot整合quarzt實現動態定時任務

    摘要:而我這里定時任務的觸發是要通過接口的方式來觸發,所以只用實現以下的調度器即可。我這里簡單說下任務的調度器,具體的任務類,觸發器,任務什么時候執行是由它決定的。遇到的坑解決方式這個是因為不兼容的問題,所以使用是不會出現這個錯誤的。 實現定時任務的幾種方式: 1.使用linux的crontab 優點: 1.使用方式很簡單,只要在crontab中寫好 2.隨時可以修改,不需要...

    hoohack 評論0 收藏0
  • SpringBoot實現動態控制定時任務-支持多參數

    摘要:由于工作上的原因,需要進行定時任務的動態增刪改查,網上大部分資料都是整合框架實現的。本人查閱了一些資料,發現本身就支持實現定時任務的動態控制。 由于工作上的原因,需要進行定時任務的動態增刪改查,網上大部分資料都是整合quertz框架實現的。本人查閱了一些資料,發現springBoot本身就支持實現定時任務的動態控制。并進行改進,現支持任意多參數定時任務配置 實現結果如下圖所示: sho...

    cjie 評論0 收藏0
  • Springboot整合Quartz實現動態定時任務

    摘要:本文使用實現對定時任務的增刪改查啟用停用等功能。并把定時任務持久化到數據庫以及支持集群。決定什么時候來執行任務。定義的是任務數據,而真正的執行邏輯是在中。封裝定時任務接口添加一個暫?;謴蛣h除修改暫停所有恢復所有 簡介 Quartz是一款功能強大的任務調度器,可以實現較為復雜的調度功能,如每月一號執行、每天凌晨執行、每周五執行等等,還支持分布式調度。本文使用Springboot+Myba...

    IamDLY 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<