当前位置: 首页 > 知识库问答 >
问题:

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

卫志泽
2023-03-14

我已经将quartz配置为在集群中工作这里是我的简单quartz配置

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

我有两个节点正在执行我的作业,但是,当我计划每秒运行某个任务时,我可以看到它只在Node1上执行。如果我暂停node1上的调度程序,任务将移动到node2,并且即使当node1再次联机时也会坚持它。我如何可能使执行在节点之间均匀地偏离?

谢谢

共有1个答案

刘元青
2023-03-14

这可能会有帮助。如果集群不是很忙,那么一个节点可能会完成所有的工作,因为它每次完成一个作业时,都会去寻找更多的工作,并找到刚刚完成的作业的下一个运行。集群上的其他节点将定期轮询工作,但不太可能找到需要执行的任何操作。

您是否有理由希望在集群中更均匀地分配工作?有什么事情没做完吗?如果一个节点接受的工作量超过了它能够完成的工作量,您可以考虑关闭threadcount

 类似资料:
  • 使用spring 2.5和quartz 1.6.2,我一直试图每分钟触发一个计划任务 我的xml文件是: 我的代码是:

  • 我想用Quartz实现下面的算法,但不确定是否可以做到。这是我第一次尝试使用石英。 用户通知作业-此作业计算每月报告并向用户发送电子邮件,它需要用户id和用于生成自定义用户报告的其他参数 可能需要生成10,000多个这样的报告 null 如何确保每月作业在单个事务中执行,以便识别所有需要每月报告的用户,并安排作业通知他们 如何立即安排作业在创建它们的作业之后立即执行? 我用的是Spring 3.2

  • 是否可以添加/删除/修改在Quartz Spring Boot中动态安排的作业(在运行时),由使用我的门户的最终用户。由于计划无法从外部访问,我不知道有什么办法。基本上,我需要将所有的时间表信息存储到数据库中并访问它们。Im构建的门户将被大量用户使用,实现这一目标的正确解决方案是什么? 否则我可以像下面这样使用cron吗 每5 mns扫描一次作业以实现此目的。

  • 我正在使用quartz调度器来调度一个Spring批处理作业。应用程序启动时没有任何异常,但它从不激发任何作业。 它运行得很成功,但经过更多的开发后,它停止了工作。我无法弄清楚我到底改变了什么配置导致了这一点。 有谁可以建议检查点在使用“JobRepositoryFactoryBean”,如果我没有或问题在其他地方。

  • 问题内容: 我有一大堆具有相同标签的节点。我希望能够在Jenkins中运行一个作业,该作业在具有相同标签的 所有 节点上执行并同时执行。 我看到了在詹金斯中使用矩阵配置选项的建议,但我只能想到一个轴(标签组)。当我尝试运行该作业时,似乎它只执行一次而不是300次(该标签组中的每个节点1次)。 我的另一条轴应该是什么?还是…有一些插件可以做到这一点?我曾经尝试过NodeLabel参数插件,然后选择“

  • 当Quartz群集时,如何查明某个特定作业当前是否在Quartz中运行? “获取正在运行的作业”问题的标准答案是使用,但是根据javadoc的说法,这在集群环境中不起作用。 那有什么诀窍?