You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shedlock仅单实例生效多实例并发执行 配置问题排查咨询

这不是Shedlock的预期行为,问题来自于你的配置缺失。

你观察到的单实例场景下“任务不并发执行”是假象:Spring Boot默认调度线程池核心数为1,同一时间只能执行一个定时任务,和Shedlock无关。你的Shedlock从始至终没有被激活,因此shedlock表不会生成任何数据,跨实例自然也不会有分布式锁的效果。

修复方案

在你的ShedlockConfiguration配置类上,补充Shedlock的启用注解@EnableSchedulerLock,示例如下:

@Configuration
@EnableScheduling
// 补充该注解,defaultLockAtMostFor为全局默认最长锁持有时间,可按需调整
@EnableSchedulerLock(defaultLockAtMostFor = "PT30S")
public class ShedlockConfiguration {
    @Bean
    public LockProvider lockProvider(DataSource dataSource) {
        return new JdbcTemplateLockProvider(
                JdbcTemplateLockProvider.Configuration.builder()
                        .withJdbcTemplate(new JdbcTemplate(dataSource))
                        .usingDbTime() 
                        .build()
        );
    }
}

验证步骤

  • 重启所有应用实例,触发一次定时任务执行,检查shedlock表是否已经生成name为example_scheduler的记录
  • 启动多个实例验证,同一时间只会有一个实例执行该定时任务

内容的提问来源于stack exchange,提问作者Jasper Citi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:06:02