我正在为我的 Java 后端编写一个监视器,并且需要能够在不同时间监视不同的事物(内存、CPU、用户活动、负载等)。最重要的是,我需要能够将每个监视器(MemoryMonitorJob
、CpuMonitorJob
、ActivityMonitorJob
等)配置为具有以下特性:
- 定期打开/关闭(例如每 15 分钟一次)
- 配置开机后的持续时间(例如 2 分钟)
- 因此,我想配置,比如说,
MemoryMonitorJob
每 15 分钟启动一次,保持 2 分钟,然后关闭......但没有 2 分钟的间隔会抵消下一次运行的时间!
因此,在此特定示例下,监视器将表现出以下行为:
- t = 0,开启
- 0 < t < 2,运行
- t = 2,关闭
- t = 15,开启
- 15 < t < 17,运行
- t = 17,关闭
- t = 30,开启
- ...
显然,在配置代码的某处,我需要检查“间隔”是否满足或超过“周期/周期”时间,否则我们将有一项工作在它仍在运行时尝试启动!
我相信Quartz Scheduler是适合这里工作的工具,但我过去只使用它来设置简单的 cron 作业(“每 15 分钟运行一次 X ”)。这个间隔属性让我失望,在仔细查看 QuartzCronTriggerImpl
文档后,我似乎无法弄清楚如何配置 Quartz 作业以使其表现得像这样。
理想情况下,如果 Quartz 可以处理这种行为,那么我只需Job
使用正确的周期/间隔设置配置 1 个监视器实现,然后将它们添加到调度程序。
Quartz 能解决这个问题吗?如果是这样,如何(我可以看到一个例子吗?!?)?如果没有,我在这里有什么选择?提前致谢!