gpt4 book ai didi

java - Quartz 调度数千个新作业

转载 作者:太空宇宙 更新时间:2023-11-04 10:32:19 25 4
gpt4 key购买 nike

如果我们重复调度作业,调度程序线程似乎会不断被唤醒。
因此它会继续运行“查找工作”查询,这是昂贵的。
我们已经看到这个查询每秒运行很多次。

我们添加的所有作业都将在未来运行,例如7 天后。
所以我们不需要调度程序线程来保持唤醒。

我深入研究了代码,发现 QuartzScheduler.scheduleJob 调用了notifySchedulerThread
这使用 boolean 值signalOnSchedulingChange来确定是否真正唤醒
但我看不到设置这个 boolean 值的方法

请问这里推荐的方法是什么?

最佳答案

我找到了这个问题的答案
您可以使用 StdSchedulerFactory 的自定义子类将 signalOnSchedulingChange 标志设置为 false
例如

    /**
* Custom StdSchedulerFactory
*
* Sets signalOnSchedulingChange to false so the SchedulerThread does not wake on every scheduleJob
*/
public class CustomStdSchedulerFactory extends StdSchedulerFactory {

private static final Logger LOG = LoggerFactory.getLogger(CustomStdSchedulerFactory.class);

@Override
protected Scheduler instantiate(QuartzSchedulerResources rsrcs, QuartzScheduler qs) {

LOG.info("setting signalOnSchedulingChange to false");
qs.setSignalOnSchedulingChange(false);

return super.instantiate(rsrcs, qs);
}
}

关于java - Quartz 调度数千个新作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49875966/

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