summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/libertacasa/pubsh/web/SchedulerBean.java
diff options
context:
space:
mode:
authorGeorg Pfuetzenreuter2022-05-09 17:58:40 +0200
committerGeorg Pfuetzenreuter2022-05-09 17:58:40 +0200
commit819149e5ca103190672ba0944720e7a8cb9b26d0 (patch)
treec972ad7214883856badf8146ad2ef65e67a83bea /src/main/java/net/libertacasa/pubsh/web/SchedulerBean.java
parent33de7a6800ba2447bf040bd25167e677a723bf2f (diff)
downloadpubsh-web-819149e5ca103190672ba0944720e7a8cb9b26d0.tar.gz
pubsh-web-819149e5ca103190672ba0944720e7a8cb9b26d0.tar.bz2
pubsh-web-819149e5ca103190672ba0944720e7a8cb9b26d0.zip
Downgrade to 2.6.7 - Init Hikari + db-scheduler
- Downgrade Spring Boot release candidate 2.7-RC1 to stable 2.6.7 - Enable Hikari with MariaDB backend - Move application.properties values to environment variables - Add sample scheduler service - Move Keycloak Bean configuration to appropriately named class - Various minor changes Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
Diffstat (limited to 'src/main/java/net/libertacasa/pubsh/web/SchedulerBean.java')
-rw-r--r--src/main/java/net/libertacasa/pubsh/web/SchedulerBean.java70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/main/java/net/libertacasa/pubsh/web/SchedulerBean.java b/src/main/java/net/libertacasa/pubsh/web/SchedulerBean.java
new file mode 100644
index 0000000..a4310af
--- /dev/null
+++ b/src/main/java/net/libertacasa/pubsh/web/SchedulerBean.java
@@ -0,0 +1,70 @@
+package net.libertacasa.pubsh.web;
+
+import java.time.Duration;
+import java.time.Instant;
+
+import javax.sql.DataSource;
+
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import com.github.kagkarlsson.scheduler.Scheduler;
+import com.github.kagkarlsson.scheduler.task.Task;
+import com.github.kagkarlsson.scheduler.task.helper.RecurringTask;
+import com.github.kagkarlsson.scheduler.task.helper.Tasks;
+import static com.github.kagkarlsson.scheduler.task.schedule.Schedules.fixedDelay;
+import com.github.kagkarlsson.scheduler.task.schedule.Schedules;
+
+//@Configuration
+//public class SchedulerBean {
+//
+// public static void run() {
+//
+// RecurringTask<Void> myTask = Tasks.recurring("my-task", FixedDelay.ofSeconds(5))
+// .execute((inst, ctx) -> {
+// System.out.println("Executed!");
+// });
+//
+// final Scheduler scheduler = Scheduler
+// .create(DatabaseBean.dataSource())
+// .startTasks(myTask)
+// .pollingInterval(Duration.ofSeconds(5))
+// .registerShutdownHook()
+// .build();
+//
+// scheduler.start();
+// }
+//}
+
+@Configuration
+public class SchedulerBean {
+
+ @Bean
+ Task<Void> recurringSampleTask(CounterService counter) {
+ return Tasks
+ .recurring("recurring-sample-task", fixedDelay(Duration.ofMinutes(1)))
+ .execute((instance, ctx) -> {
+ System.out.printf("Recurring testing task. Instance: %s, ctx: %s\n", instance, ctx);
+ CounterService.increase();
+ });
+ }
+
+ @Bean
+ Task<Void> sampleOneTimeTask() {
+ return Tasks.oneTime("one-time-sample-task")
+ .execute((instance, ctx) -> {
+ System.out.printf("OK, one-shot testing task.\n");
+ });
+ }
+
+ @Bean
+ CommandLineRunner executeOnStartup(Scheduler scheduler, Task<Void> sampleOneTimeTask) {
+ System.out.println("Scheduling one-shot testing task to execute now.");
+
+ return ignored -> scheduler.schedule(
+ sampleOneTimeTask.instance("command-line-runner"),
+ Instant.now()
+ );
+ }
+}