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

调度程序作业记录的分发处理

别帅
2023-03-14

我正在研究一个用例,其中我安排了一个cron作业(通过石英),它从数据库中读取某些条目并处理它们。现在,在每个计划中,我可以获得数千条需要处理的记录。处理每条记录需要时间(以秒/分钟为单位)。目前,所有这些记录都在单个节点(由quartz选择的节点)上进行处理。现在,我面临的挑战是并行化这些记录处理。请帮助我解决以下问题:

  1. 如何将这些记录/任务分发到计算机群集
  2. 如果任何计算机在处理少量记录后发生故障,则剩余的记录应由群集中的正常节点处理
  3. 获取所有记录处理已完成的信号。

共有1个答案

狄玉书
2023-03-14

创建cron作业,以所需的频率在每台主机上单独运行。您需要对每个记录进行某种形式的锁定,或者对记录集进行某种形式的范围锁定,以确保服务器处理互斥的记录集。

e、 g.:您可以向所有记录添加以下新字段:

由服务器锁定:锁定持续时间(或锁定过期时间):

每次运行时,每个cron都会选择一组已过期或空锁的记录,然后通过放入这两个条目来获取一小组记录的锁。然后它继续处理它们。如果它崩溃或卡住,锁就会过期,否则它会在完成时被释放。

 类似资料:
  • 我有两个要求。 每周一触发作业 对于第一个要求,我尝试了和。他们俩都不工作。该函数未被调用。 对于第二个要求,我尝试了和。我得到下面的错误。 原因:java。lang.IllegalStateException:遇到无效的@Scheduled方法“monthlyData”:用于输入字符串:“2#1”。

  • 我正在尝试自动登录到2008 R2服务器上的一组RDP客户端,当从桌面双击批处理文件时,下面的批处理工作正常,但是当将.bat文件设置为作为任务调度程序中的任务运行时,什么都没有发生 计划任务被设置为在管理员帐户下运行(只有一个可用),并且(开始于)可选字段也被设置为“C:\Users\Administrator\Desktop”。

  • 我们有一个使用Spring Framework在Tomcat中运行的Web应用程序。我们需要为循环操作添加一些计划作业。为此,我们遇到了Quartz Scheduler,并遵循了使用Quartz with Spring配置作业的教程,并按预期计划并运行了作业。 所以我们有一些任务是在应用程序启动时安排的。现在我们希望用户手动运行作业并更改作业的触发器,但是我们需要将这些更改持久化到数据库中。因此,

  • 当我启动石英调度程序时,它不会触发我的工作。我的工作被安排在每个小时。但是启动我的调度程序后,我的第一个工作在一个小时后被触发。我是石英新手。下面是我的石英启动代码

  • 在一个项目中,我们必须运行一个定期开始的作业(现在QA env上每5分钟开始一次),该作业处理40K用户的一些任务。我们决定使用Spring Batch,因为它非常适合,并且几乎用默认配置实现了它(例如,它使用)。好的,有一个工作由一个步骤组成: 开箱即用 在内存中执行轻量级计算的自定义 自定义,它通过多个JPQL和本机查询将数据保存到同一个PostgreSQL db。 作业本身是用调度的,并且每