我正在尝试找到一种方法来在不同用户设置的特定时间运行一个方法,让我解释一下!
假设我们有 2 个站点:siteA 和 siteB,这些站点分别有管理员:adminA 和 adminB。
每个管理员都可以创建一个工作计划,在该计划中启动其站点中的rabbitmq队列。
现在,每个管理员手动启动他的队列。
我想要的是,举个例子:
adminA 创建了 08:00 到 18:00 的工作时间表
adminB 创建了 09:00 到 17:30 的工作时间表
我希望启动站点队列的方法在该站点管理员指定的时间执行,因此:
queueA1、queueA2、queueA3...于08:00启动
queueB1、queueB2...于09:30启动
让我们假设名为 launchQueues(String siteId) 的方法
我已经了解了@Scheduled,但似乎它只适用于我想在固定时间调用一个方法的时候
您可以有一个公共作业,计划每 n 分钟运行一次。该作业可以找到在该时间间隔内需要启动的任何队列,然后启动它。
例如此作业每 5 分钟安排一次。
在上午 9:00,findQueuesToLaunch() 方法将查找需要在上午 9:00 启动且尚未运行的队列。
@Scheduled(cron = "0 0/5 * * * ?")
public void launchQueue() {
List<String> queues = findQueuesToLaunch();
for (String queueId in queues) {
launchQueue(queueId);
}
}