gpt4 book ai didi

java - 如何使用数据库数据动态添加或删除spring框架的调度程序(服务器处于运行状态)?

转载 作者:行者123 更新时间:2023-11-30 05:32:12 25 4
gpt4 key购买 nike

我正在使用 Spring-boot 和 Oracle sql 开发人员。我想实现类似“用户管理调度程序”的功能。

用户可以在网页上添加或删除调度程序。如果用户添加“调度程序每 3 分钟运行一次”,数据库表可能会...

s_id | s_cron | s_detail
sid000001 | 0 0/3 * * * ? | do job 1

Spring 调度程序必须每 3 分钟执行“作业 1”。

如果另一个用户还添加了“每 1 分钟运行一次的调度程序”,

s_id | s_cron | s_detail
sid000001 | 0 0/3 * * * ? | do job 1
sid000002 | 0 0/1 * * * ? | do job 2

Spring 调度程序必须每 3 分钟执行“作业 1”,并且必须同时每 1 分钟执行“作业 2”。

问题是:如何在 Spring-boot 中实现它?Spring服务必须动态(或自动)添加/删除调度程序,并在服务器运行中添加/删除数据库数据。

请给我一些帮助。

最佳答案

如果你想动态调度任务,你可以通过使用 ExecutorService 特别是 ScheduledThreadPoolExecutor 来实现,无需 spring

Runnable task  = () -> doSomething();
ScheduledExecutorService executor =
Executors.newScheduledThreadPool(Runtime.getRuntime().availableProcessors());
// Schedule a task that will be executed in 120 sec
executor.schedule(task, 120, TimeUnit.SECONDS);

// Schedule a task that will be first run in 120 sec and each 120sec
// If an exception occurs then it's task executions are canceled.
executor.scheduleAtFixedRate(task, 120, 120, TimeUnit.SECONDS);

// Schedule a task that will be first run in 120 sec and each 120sec after
the last
execution
// If an exception occurs then it's task executions are canceled.
executor.scheduleWithFixedDelay(task, 120, 120, TimeUnit.SECONDS);

关于java - 如何使用数据库数据动态添加或删除spring框架的调度程序(服务器处于运行状态)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57301046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com