0

我通过向 POM.XML 添加依赖项来配置 Shedlock,如下所示:

 <dependency>
        <groupId>net.javacrumbs.shedlock</groupId>
        <artifactId>shedlock-spring</artifactId>
        <version>4.29.0</version>
    </dependency>
    <dependency>
        <groupId>net.javacrumbs.shedlock</groupId>
        <artifactId>shedlock-provider-jdbc-template</artifactId>
        <version>4.29.0</version>
    </dependency>

注册了bean:

 @Bean
    public LockProvider lockProvider(DataSource dataSource, JdbcTemplate jdbcTemplate) {
        // @formatter:off
        return  new JdbcTemplateLockProvider(JdbcTemplateLockProvider.Configuration.builder()
                .withTableName("scheduler_lock_vw")
                .withJdbcTemplate(new JdbcTemplate(dataSource))
                .usingDbTime()
                .withLockedByValue("search-service")
                .build());
        // @formatter:on
    }

添加调度程序:

@Component
@Slf4j
public class Scheduler {
    
        
    @Scheduled(cron = "0 * * * * *")
    @SchedulerLock(name = "elastic_reindex_scheduler", lockAtLeastFor = "PT30S", lockAtMostFor = "PT45S")
    public void shortRunningTask() {
        LockAssert.assertLocked();
        log.info("Start short running task");
    }
} 

问题是我没有看到使用此名称“elastic_reindex_scheduler”插入表(“scheduler_lock_vw”)的记录。行 - “LockAssert.assertLocked();” 抛出错误“计划任务 java.lang.IllegalStateException 发生意外错误:任务未锁定。

4

0 回答 0