diff options
Diffstat (limited to 'src/main/java/net/libertacasa/pubsh/web/SchedulerBean.java')
-rw-r--r-- | src/main/java/net/libertacasa/pubsh/web/SchedulerBean.java | 70 |
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() + ); + } +} |