首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行多个实例时,Shedlock运行重复

运行多个实例时,Shedlock运行重复
EN

Stack Overflow用户
提问于 2020-03-26 17:44:28
回答 2查看 821关注 0票数 1

我使用shedlock来确保当我有多个实例时,一次只能运行一个调度任务

代码语言:javascript
复制
<dependency>
        <groupId>net.javacrumbs.shedlock</groupId>
        <artifactId>shedlock-spring</artifactId>
        <version>4.5.2</version>
    </dependency>
    <dependency>
        <groupId>net.javacrumbs.shedlock</groupId>
        <artifactId>shedlock-provider-jdbc-template</artifactId>
        <version>4.6.0</version>
    </dependency>

@Configuration
@EnableScheduling
@EnableSchedulerLock(
defaultLockAtMostFor = "${scheduled.task.lock.at.most}", 
defaultLockAtLeastFor = "${scheduled.task.lock.at.least}")
public class SchedulerConfig implements AsyncConfigurer, SchedulingConfigurer {

@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
    // TODO Auto-generated method stub
    TaskScheduler scheduler = this.taskScheduler();
    taskRegistrar.setTaskScheduler(scheduler);
}

@Override
public Executor getAsyncExecutor() {
    Executor executor = this.taskScheduler();
    return executor;
}

// shedlock config
@Bean
public LockProvider lockProvider(DataSource dataSource) {
    return new JdbcTemplateLockProvider(dataSource);
}  
}

这是我的任务

代码语言:javascript
复制
@Scheduled(cron = "0 36 16 * * ?") //
 @net.javacrumbs.shedlock.spring.annotation.SchedulerLock(name = "ms.template.scheduleTaskJob2")
public void scheduleTaskJob2() {
    // Mandatory information for logging
    String _id = "schedule-" + UUID.randomUUID().toString();
    ThreadContext.put("serviceMessageId", _id);

    logger.info("Cron Expression task called at the 0 second every minutes Execution Time - {}",
            dateTimeFormatter.format(LocalDateTime.now()));
}

但在我应用程序的两个实例中,排定任务正在执行,且此信息显示在数据库中

代码语言:javascript
复制
ms.template.scheduleTaskJob2    26-MAR-20 04.51.00.001824000 PM 26-MAR-20 04.36.00.392858000 PM MB0001-PCHOBW41
ms.template.scheduleTaskJob2    26-MAR-20 04.51.00.004479000 PM 26-MAR-20 04.36.00.298564000 PM MB0001-PCHOBT97

为什么会发生这个错误?非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2020-03-28 18:02:38

为我的错误道歉。创建Shedlock表时,我缺少主键。

票数 1
EN

Stack Overflow用户

发布于 2020-03-27 17:01:05

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60864483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档