Шедлок запустил дубликаты при запуске нескольких экземпляров - PullRequest
0 голосов
/ 26 марта 2020

Я использую shedlock, чтобы убедиться, что только 1 задача расписания может выполняться одновременно, когда у меня есть несколько экземпляров

<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);
}  
}

Вот моя задача

@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()));
}

Но в обоих 2 Экземпляр моего приложения, задача расписания выполняется, и эта информация отображается в БД

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

Почему возникает эта ошибка? Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 28 марта 2020

Извините за мой плохой. Мне не хватает первичного ключа при создании таблицы Шедлока.

0 голосов
/ 27 марта 2020

Пожалуйста, обратитесь к разделу устранения неполадок https://github.com/lukas-krecan/ShedLock#troubleshooting

...