gpt4 book ai didi

java - 集群环境下的Spring调度器

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:53:48 26 4
gpt4 key购买 nike

我正在使用 spring scheduler 使用 @Scheduled 注释来安排运行文件生成服务的作业。该应用程序部署在集群环境中的 5 个独立的 tomcat 节点上,用于负载平衡和故障转移。因此,服务被安排了 5 次,这是意料之外的。有没有办法将调度程序配置为仅在当前节点上运行?

有一种方法使用数据库找出当前 Activity 节点并为该特定实例调用调度程序 here

另一种方法是使用 quartz scheduler

由于我无法对已部署的应用程序进行重大更改,是否有解决该问题的简单方法?请指教。

最佳答案

您可以使用 ShedLock项目。您只需注释执行时应锁定的任务

@Scheduled( ... )
@SchedulerLock(name = "scheduledTaskName")
public void scheduledTask() {
// do something
}

配置 Spring 和 LockProvider(目前支持 SQL 和 Mongo)

@Bean
public TaskScheduler taskScheduler(LockProvider lockProvider) {
return SpringLockableTaskSchedulerFactory
.newLockableTaskScheduler(poolSize, lockProvider);
}

关于java - 集群环境下的Spring调度器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37489925/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com