Java 多节点环境中的计划作业

Java 多节点环境中的计划作业,java,spring,cron,distributed,Java,Spring,Cron,Distributed,我正在处理一个计划的作业,该作业将以一定的间隔运行(例如,每天下午1点运行一次),通过Cron进行计划。我正在使用Java和Spring 编写计划的作业非常简单——确实如此:从数据库中抓取人员列表将符合特定的条件,每个人都要进行一些计算并触发一条消息 我在本地和测试中使用单节点环境,但是当我们投入生产时,它将是多节点环境(带有负载平衡器等)。我关心的是多节点环境将如何影响计划的作业 我的猜测是,我可能(或者很可能)最终会触发重复消息 机器1:抓取人员列表,进行计算 机器2:抓取人员列表,进行计

我正在处理一个计划的作业,该作业将以一定的间隔运行(例如,每天下午1点运行一次),通过Cron进行计划。我正在使用Java和Spring

编写计划的作业非常简单——确实如此:从数据库中抓取人员列表将符合特定的条件,每个人都要进行一些计算并触发一条消息

我在本地和测试中使用单节点环境,但是当我们投入生产时,它将是多节点环境(带有负载平衡器等)。我关心的是多节点环境将如何影响计划的作业

我的猜测是,我可能(或者很可能)最终会触发重复消息

  • 机器1:抓取人员列表,进行计算
  • 机器2:抓取人员列表,进行计算
  • 机器1:触发消息
  • 机器2:触发消息
我的猜测正确吗


为避免上述问题,建议的解决方案是什么?我是否需要创建一个主/从分布式系统解决方案来管理多节点环境?

如果您有三个Tomcat实例,例如,每个负载在Apache之后平衡,并且在每个应用程序运行时,您将有三个不同的触发器,并且您的作业将运行三次。我不认为您将拥有一个具有分布式作业执行的多节点环境,除非某种用于分发作业部分的机制已经到位。 如果你还没有看过这个项目,请看一下。它可以处理和运行