-
SpringBoot中的定時任務主要透過@Scheduled註解以及SchedulingConfigurer介面實現。
-
@Scheduled註解是Spring提供的一個註解,用於標記方法作為定時任務執行:配置方法在指定的時間間隔或時間點執行,實現各種定時任務需求。
//在你需要定時的方法上加上@Scheduled註解,並用corn表示式指定如何定時,下式表達了每隔15秒執行一次方法 @Scheduled(cron = "*/15 * * * * ?") public void hello() { System.out.println("hello執行了"); }
-
但是要記得在啟動類上開啟定時功能:@EnableScheduling // 開啟定時任務功能
-
@Scheduled任務在單執行緒環境下執行,可能出現任務堆積的情況,尤其在任務量大或任務執行時間長的情況下,而且這些任務可能會變得混亂和難以管理。定時任務的配置分散在各個任務方法中,不利於統一管理和維護。對於需要根據動態條件建立或銷燬定時任務的情況,@Scheduled註解也無法滿足需求。
-
使用SchedulingConfigurer介面來動態地建立和管理定時任務。透過實現 SchedulingConfigurer 介面,我們可以編寫程式碼來動態地註冊和管理定時任務,從而實現靈活的任務排程需求。SchedulingConfigurer 介面是 Spring 提供的一個用於定時任務配置的擴充套件介面,它允許開發人員更細粒度地控制定時任務的執行。透過實現SchedulingConfigurer介面,可以自定義任務排程器(TaskScheduler),配置執行緒池等引數,以滿足不同場景下的定時任務需求。
@Configuration @EnableScheduling public class CustomSchedulingConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { // 定時任務邏輯 } }
-
透過實現SchedulingConfigurer介面,重寫configureTasks方法,自定義任務排程器的配置。此外我們還可以配置執行緒池,用於控制定時任務執行時的執行緒數量、併發性等引數。
@Bean(destroyMethod = "shutdown") public ThreadPoolTaskScheduler threadPoolTaskScheduler() { ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); scheduler.setPoolSize(5); // 設定執行緒池大小 scheduler.setThreadNamePrefix("scheduled-task-"); // 設定執行緒名稱字首 scheduler.setAwaitTerminationSeconds(60); // 設定終止等待時間 // 設定處理拒絕執行的任務異常 scheduler.setRejectedExecutionHandler((r, executor) -> log.error("Task rejected", r)); // 處理定時任務執行過程中丟擲的未捕獲異常 scheduler.setErrorHandler(e -> log.error("Error in scheduled task", e)); return scheduler; } //然後將自定義的ThreadPoolTaskScheduler設定到ScheduledTaskRegistrar中去: @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { // 定時任務邏輯 taskRegistrar.setTaskScheduler(threadPoolTaskScheduler()); } //透過SchedulingConfigurer介面,可以更靈活地配置任務排程器和定時任務的執行規則,比如動態註冊定時任務、動態修改任務執行規則等。
spring boot中的定時任務
相關文章
- spring boot 定時任務Spring Boot
- Spring Boot(九):定時任務Spring Boot
- Spring Boot 配置 Quartz 定時任務Spring Bootquartz
- Spring Boot 中實現定時任務的兩種方式Spring Boot
- Spring Boot中引入定時任務Spring Boot
- Spring boot 非同步/定時任務/郵件Spring Boot非同步
- Spring Boot 實現定時任務的 4 種方式Spring Boot
- Spring Boot 定時任務的技術選型對比Spring Boot
- Spring 定時任務Spring
- Spring Boot系列之使用@Scheduled實現定時任務Spring Boot
- Spring Boot中得定時任務執行一段時間後突然停了Spring Boot
- Spring - Task定時任務Spring
- Spring Boot之使用Scheduled註解實現定時任務Springboot
- spring定時任務註解Spring
- Spring Scheduler定時任務 + QuartzSpringquartz
- spring定時任務相關Spring
- spring執行定時任務Spring
- Spring Boot整合quartz實現定時任務並支援切換任務資料來源Spring Bootquartz
- Spring Boot 系統啟動任務定義Spring Boot
- Spring排程定時任務的方式Spring
- Spring定時任務的簡單例子Spring單例
- Java 中的定時任務(一)Java
- Spring Boot入門(三):使用Scheduled註解實現定時任務Spring Boot
- Spring Boot2 系列教程(十六)定時任務的兩種實現方式Spring Boot
- Spring Task定時任務的配置和使用Spring
- spring-boot-route(二十一)quartz實現動態定時任務Springbootquartz
- Linux系統中延時任務及定時任務Linux
- 實戰Spring Boot 2.0系列(六) - 單機定時任務的幾種實現Spring Boot
- Spring定時任務高階使用篇Spring
- Spring之定時任務基本使用篇Spring
- Spring+quartz 實現定時任務Springquartz
- 定時任務
- Spring Boot 2.x基礎教程:使用Elastic Job實現定時任務Spring BootAST
- Android 中的定時任務排程Android
- Node 系統中定時任務的演化
- Spring Boot應用中進行任務排程Spring Boot
- 使用Spring Task輕鬆完成定時任務Spring
- spring3.2 @Scheduled註解 定時任務Spring