如果我有一个3节点集群。我需要按如下方式运行特定的Quartz作业:
如何将同时作业实例的总数限制为10,将任何一台主机上运行的数量限制为5?这甚至可能吗?
请注意,我不能限制线程数,因为我有其他需要同时在同一台服务器上运行的作业,而且那些也需要线程。
感谢。
答案 0 :(得分:1)
虽然不完全限制连续作业计数,但您可以使用线程池配置限制最大线程数。请参阅Quartz Configuration Reference。
Grails Quartz插件附带一个方便的脚本来安装配置文件:
grails install-quartz-config
<强> org.quartz.threadPool.threadCount 强>
可以是任何正整数,但你应该只知道 1到100之间的数字非常实用。这是数量 可用于并发执行作业的线程。如果你 只有一些工作每天开几次,然后1个线程 很多!如果你有成千上万的工作岗位,每个工作岗位都有很多工作 分钟,那么你可能想要一个更像50或100的线程数 (这在很大程度上取决于你的工作所做的工作的性质, 和你的系统资源!)。
答案 1 :(得分:1)
我认为我找到了答案。
答案是运行两个(或更多)单独的Quartz调度程序。第一个调度程序中的作业将为第二个调度程序调度作业,第二个调度程序将运行它们。然后第二个调度程序可以限制为(在这种情况下)5个线程,尽管第一个调度程序可能有更多。
有关此内容的一些信息,请参阅 http://quartz-scheduler.org/documentation/quartz-2.2.x/cookbook/MultipleSchedulers
但是我不知道如何在Grails中实现两个单独的Quartz Scheduler。如果有人可以提供帮助,我会很感激。虽然没有答案,但是现有Stack Overflow问题存在问题。