首页 > 解决方案 > Spring task:scheduled 或 @Scheduler 限制作业在多个实例中运行

问题描述

我有一项@Scheduler 工作在集群环境中的多台服务器上运行。但是,我想将作业限制为仅在一台服务器中运行,并且一旦任何其他服务器启动它,其他服务器不应运行相同的作业。

我已经探索了 Spring Batch 使用一些数据库表的锁定机制,但只在 spring 中寻找任何解决方案task:scheduler

标签: springspring-bootspring-batchscheduled-tasksquartz-scheduler

解决方案


我遇到了同样的问题,我实现的解决方案是带有 Hazelcast 的 Lock 机制,为了使其易于使用,我还为此添加了适当的注释和一些 spring AOP。因此,通过这个技巧,我能够通过单个注释在集群上强制执行单个计划。


推荐阅读