From 2cd679bcaf5b0c6fd61456f820010830c777139b Mon Sep 17 00:00:00 2001 From: LamGC Date: Thu, 2 Sep 2021 14:26:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BA=20GroovyTrigger=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=20shutdown=20=E6=96=B9=E6=B3=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加 shutdown 方法用于向触发器发出停止信号, 以后有用. --- .../script/groovy/trigger/GroovyTrigger.java | 5 +++++ .../sentry/script/groovy/trigger/OnceTrigger.java | 5 +++++ .../sentry/script/groovy/trigger/TimerTrigger.java | 14 +++++++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/GroovyTrigger.java b/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/GroovyTrigger.java index 352d4ad..fcca0ba 100644 --- a/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/GroovyTrigger.java +++ b/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/GroovyTrigger.java @@ -17,4 +17,9 @@ public interface GroovyTrigger { */ void run(Closure task); + /** + * 关闭触发器. + */ + void shutdown(); + } diff --git a/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/OnceTrigger.java b/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/OnceTrigger.java index 85b3b02..a88216f 100644 --- a/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/OnceTrigger.java +++ b/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/OnceTrigger.java @@ -27,4 +27,9 @@ public class OnceTrigger implements GroovyTrigger { public void run(Closure task) { EXECUTOR.execute(task); } + + @Override + public void shutdown() { + // Nothing. + } } diff --git a/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/TimerTrigger.java b/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/TimerTrigger.java index fa51423..892fc1a 100644 --- a/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/TimerTrigger.java +++ b/src/main/java/net/lamgc/oracle/sentry/script/groovy/trigger/TimerTrigger.java @@ -8,6 +8,8 @@ import org.slf4j.LoggerFactory; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.springframework.scheduling.support.CronTrigger; +import java.util.concurrent.ScheduledFuture; + /** * @author LamGC */ @@ -28,6 +30,9 @@ public class TimerTrigger implements GroovyTrigger { SCHEDULER.initialize(); } + private CronTrigger trigger; + private ScheduledFuture future; + /** * 设定定时时间. *

只允许在第一次执行时设置. @@ -59,7 +64,14 @@ public class TimerTrigger implements GroovyTrigger { return; } - SCHEDULER.schedule(new TimerTaskRunnable(runnable), trigger); + this.future = SCHEDULER.schedule(new TimerTaskRunnable(runnable), trigger); + } + + @Override + public void shutdown() { + if (this.future != null) { + future.cancel(false); + } } private static class TimerTaskRunnable implements Runnable {