Quartz 作业始终在同一节点上执行

Quartz job always executed on same node

我将 quartz 配置为在集群中工作,我的简单 quartz 配置

org.quartz.scheduler.instanceName=作业调度程序

org.quartz.scheduler.instanceId=AUTO
org.quartz.threadPool.threadCount=5
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties=true
org.quartz.jobStore.misfireThreshold=10000
org.quartz.jobStore.tablePrefix=QRTZ_

org.quartz.jobStore.isClustered=true
org.quartz.jobStore.clusterCheckinInterval=20000

我有两个节点执行我的作业,但是当我每秒安排一些任务到 运行 时,我可以看到它只在节点 1 上执行。如果我在 node1 上暂停调度程序,任务将移动到 node2 并坚持下去,即使 node1 再次联机也是如此。我怎样才能使节点之间的执行均匀偏差?

谢谢

This 可能会有帮助。如果你的集群不是很忙,一个节点可能会完成所有的工作,因为每次它完成一项工作,它就会去寻找更多的工作,并找到下一个 运行 工作它刚刚完成。集群上的另一个节点将定期轮询工作,但不太可能找到任何需要做的事情。

您是否有理由希望在集群中更均匀地分配工作?有什么事情没有完成吗?如果一个节点接受的工作多于它能够完成的工作,您可以考虑调低 threadCount