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

資訊專欄INFORMATION COLUMN

SpringBoot 設(shè)置動態(tài)定時任務(wù)

IT那活兒 / 1626人閱讀
SpringBoot 設(shè)置動態(tài)定時任務(wù)

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

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

態(tài)配置定時任務(wù)--CronTrigger

下面我們開始進行動態(tài)配置定時任務(wù),上代碼:
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) {
       // 動態(tài)使用cron表達式設(shè)置循環(huán)間隔
       taskRegistrar.addTriggerTask(new Runnable() {
           @Override
           public void run() {
               logger.info("Current time:{}", LocalDateTime.now());
           }
       }, new Trigger() {
           @Override
           public Date nextExecutionTime(TriggerContext triggerContext) {
               // 使用CronTrigger觸發(fā)器,可動態(tài)修改cron表達式來操作循環(huán)規(guī)則
               CronTrigger cronTrigger = new CronTrigger(cron);
               Date nextExecutionTime = cronTrigger.nextExecutionTime(triggerContext);

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

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

態(tài)配置定時任務(wù)--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) {
       // 動態(tài)使用cron表達式設(shè)置循環(huán)間隔
       taskRegistrar.addTriggerTask(new Runnable() {
           @Override
           public void run() {
               logger.info("Current time:{}", LocalDateTime.now());
           }
       }, new Trigger() {
           @Override
           public Date nextExecutionTime(TriggerContext triggerContext) {
               // 使用CronTrigger觸發(fā)器,可動態(tài)修改cron表達式來操作循環(huán)規(guī)則
// CronTrigger cronTrigger = new CronTrigger(cron);
// Date nextExecutionTime = cronTrigger.nextExecutionTime(triggerContext);

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


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

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129180.html

相關(guān)文章

  • SpringBoot中并發(fā)定時任務(wù)的實現(xiàn)、動態(tài)定時任務(wù)的實現(xiàn)(看這一篇就夠了)

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

    BWrong 評論0 收藏0
  • springboot整合quarzt實現(xiàn)動態(tài)定時任務(wù)

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

    hoohack 評論0 收藏0
  • SpringBoot實現(xiàn)動態(tài)控制定時任務(wù)-支持多參數(shù)

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

    cjie 評論0 收藏0
  • Springboot整合Quartz實現(xiàn)動態(tài)定時任務(wù)

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

    IamDLY 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

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