Spring Boot 中有 QuartzJob 计划每天运行几次,以发送从数据库生成的报告。
我的应用程序位于 4 台服务器中。为每个计划生成 4 个报告。
我想限制这一点并发送一份报告。
我不能仅从特定节点发送。
如果这个问题太幼稚,我很抱歉,我希望作业被调度,以便它一个一个地执行,而不是并行执行。它只执行一次。
从文档中,@DisallowConcurrentExecution 是
但是当我使用相同的 JobKey 安排工作时,我得到了
Failed to schedule a job org.quartz.ObjectAlreadyExistsException
如果我生成一个不同的 JobKey,它就不会注意到,@DisallowConcurrentExecution并且该作业将并行执行(如文档中所述)。
请建议我如何实现这一点,任何指针都会真正有帮助!
PS:我不知道会安排哪些工作。所以,如果作业已经在运行,我需要一些方法来动态链接作业。
有没有可以用来将 cron 表达式转换为时间间隔的 java 库?可以是秒、毫秒、分钟等......
Cron Expression (Input): 0/15 * * * * ?
Output1: 15 (getInSeconds)
Output2: 15000 (getInMilliSeconds)
Run Code Online (Sandbox Code Playgroud) 请在Quartz Scheduler和线程池上提供一些示例