Spring任务:已调度或@Scheduler以限制作业在多个实例中运行

问题描述 投票:0回答:2

我有一个@Scheduler作业,该作业在群集环境中的多台服务器上运行。但是,我想限制该作业只能在一个服务器中运行,而其他任何服务器一旦启动它,其他服务器就不应运行同一作业。

我已经探索了Spring Batch具有使用某些Database表的锁定机制,但是仅在spring task:scheduler中寻找任何解决方案。

spring spring-boot spring-batch scheduled-tasks quartz-scheduler
2个回答
1
投票

我有相同的问题,我实现的解决方案是使用Hazelcast的Lock机制,并且为了使其易于使用,我还为此添加了适当的注释和一些spring AOP。因此,有了这个技巧,我就可以通过一个注释在整个集群上强制执行一个时间表。


0
投票

Spring Batch具有很好的功能,它将不会两次使用相同的作业参数运行该作业。

您可以使用此功能,以便当弹簧批处理作业在另一台服务器中启动时不会运行。

通常人们将时间戳记作为参数传递,因此它将通过此​​逻辑,您可以更改它。

© www.soinside.com 2019 - 2024. All rights reserved.