


Implementierungscode für die dynamische SpringBoot-Verwaltung geplanter Aufgaben
Sep 11, 2018 pm 02:20 PMDer Inhalt dieses Artikels befasst sich mit dem Implementierungscode für die dynamische Verwaltung geplanter Aufgaben. Ich hoffe, dass er für Freunde hilfreich ist.
SpringBoot verwaltet geplante Aufgaben dynamisch
Verwenden Sie zuerst @EnableScheduling, um geplante Aufgaben zu aktivieren
package com.fighting; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class ScheduledApplication { public static void main(String[] args) { SpringApplication.run(ScheduledApplication.class, args); } }
Protokollebene konfigurieren
logging.level.com= debug logging.file=springboot-scheduled.log
Geplante Aufgaben mit festem Zeitraum
package com.fighting; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** * Spring静态周期定时任务 * * @author fighting * @date 2018-09-11 */ @Component public class SpringStaticCronTask { public static final Logger logger = LoggerFactory.getLogger(SpringStaticCronTask.class); @Scheduled(cron = "0/5 * * * * ?") public void staticCornTask() { logger.debug("staticCronTask is running..."); } }
Den Timing-Zyklus dynamisch ändern
Implementieren Sie die SchedulingConfigurer-Schnittstelle und schreiben Sie die configureTasks-Methode neu
package com.fighting; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.scheduling.support.CronTrigger; import org.springframework.stereotype.Component; /** * 动态定时任务 * * @author fighting * @date 2018-09-11 */ @Component public class SpringDynamicCronTask implements SchedulingConfigurer { private static final Logger logger = LoggerFactory.getLogger(SpringDynamicCronTask.class); private static String cron = "0/5 * * * * ?"; @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { scheduledTaskRegistrar.addTriggerTask(() -> { // 任务逻辑 logger.error("dynamicCronTask is running..."); }, triggerContext -> { // 任务触发,在这里可修改任务的执行周期,因为每次调度都会执行这里 CronTrigger cronTrigger = new CronTrigger(cron); return cronTrigger.nextExecutionTime(triggerContext); }); } public SpringDynamicCronTask() { //模拟业务修改周期,可以在具体业务中修改参数cron new Thread(() -> { try { Thread.sleep(15000); } catch (InterruptedException e) { e.printStackTrace(); } cron = "0/2 * * * * ?"; }).start(); } }
Beobachten Sie die Druckergebnisse. Der Zyklus hat sich geändert, aber das Projekt wurde nicht neu gestartet.
2018-09-11 13:36:50.009 DEBUG 16708 --- [pool-1-thread-1] com.fighting.SpringStaticCronTask : staticCronTask is running... 2018-09-11 13:36:50.010 ERROR 16708 --- [pool-1-thread-1] com.fighting.SpringDynamicCronTask : dynamicCronTask is running... 2018-09-11 13:36:55.001 DEBUG 16708 --- [pool-1-thread-1] com.fighting.SpringStaticCronTask : staticCronTask is running... 2018-09-11 13:36:55.002 ERROR 16708 --- [pool-1-thread-1] com.fighting.SpringDynamicCronTask : dynamicCronTask is running... 2018-09-11 13:37:00.009 DEBUG 16708 --- [pool-1-thread-1] com.fighting.SpringStaticCronTask : staticCronTask is running... 2018-09-11 13:37:00.016 ERROR 16708 --- [pool-1-thread-1] com.fighting.SpringDynamicCronTask : dynamicCronTask is running... 2018-09-11 13:37:05.016 DEBUG 16708 --- [pool-1-thread-1] com.fighting.SpringStaticCronTask : staticCronTask is running... 2018-09-11 13:37:05.016 ERROR 16708 --- [pool-1-thread-1] com.fighting.SpringDynamicCronTask : dynamicCronTask is running... 2018-09-11 13:37:06.013 ERROR 16708 --- [pool-1-thread-1] com.fighting.SpringDynamicCronTask : dynamicCronTask is running... 2018-09-11 13:37:08.008 ERROR 16708 --- [pool-1-thread-1] com.fighting.SpringDynamicCronTask : dynamicCronTask is running... 2018-09-11 13:37:10.002 ERROR 16708 --- [pool-1-thread-1] com.fighting.SpringDynamicCronTask : dynamicCronTask is running... 2018-09-11 13:37:10.003 DEBUG 16708 --- [pool-1-thread-1] com.fighting.SpringStaticCronTask : staticCronTask is running... 2018-09-11 13:37:12.002 ERROR 16708 --- [pool-1-thread-1] com.fighting.SpringDynamicCronTask : dynamicCronTask is running... 2018-09-11 13:37:14.006 ERROR 16708 --- [pool-1-thread-1] com.fighting.SpringDynamicCronTask : dynamicCronTask is running... 2018-09-11 13:37:15.015 DEBUG 16708 --- [pool-1-thread-1] com.fighting.SpringStaticCronTask : staticCronTask is running... 2018-09-11 13:37:16.012 ERROR 16708 --- [pool-1-thread-1] com.fighting.SpringDynamicCronTask : dynamicCronTask is running... 2018-09-11 13:37:18.002 ERROR 16708 --- [pool-1-thread-1] com.fighting.SpringDynamicCronTask : dynamicCronTask is running...
Verwandte Empfehlungen:
SpringBoot-Planungsaufgaben und allgemeine Aufgabenausdrücke
Geplante Aufgaben über Reidis verwalten
Das obige ist der detaillierte Inhalt vonImplementierungscode für die dynamische SpringBoot-Verwaltung geplanter Aufgaben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie Springboot Jasypt integriert, um die Verschlüsselung von Konfigurationsdateien zu implementieren

So implementieren Sie verteilte Sperren mit Redis in SpringBoot

Wie SpringBoot Redisson integriert, um eine Verzögerungswarteschlange zu implementieren

Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC

So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann

Wie SpringBoot Redis anpasst, um die Cache-Serialisierung zu implementieren

So erhalten Sie den Wert in application.yml in Springboot

So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden
