Замок для пружинной загрузки «связь «замок для обуви» не существует»

#spring-data-jpa #shedlock

Вопрос:

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

«org.postgresql.util.PSQLException: ОШИБКА: связь «блокировка» не существует» ошибка.

Это lockProviderBean:

 @Bean
    public LockProvider lockProvider(DataSource dataSource) {
        return new JdbcTemplateLockProvider(
                JdbcTemplateLockProvider.Configuration.builder()
                        .withJdbcTemplate(new JdbcTemplate(dataSource))
                        .usingDbTime() 
                        .build()
        );
    }
 

Это запланированная работа:

 @Scheduled(cron = "${cronProperty:0 00 23 * * *}")
@SchedulerLock(name = "schedulerLockName")
public void scheduledJob() {
       ..............
}
 

Я добавил эти обозначения в свой класс, который содержит метод schduledJob:

 @EnableScheduling
@Component
@Configuration
@EnableSchedulerLock(defaultLockAtMostFor = "2m")
 

Я использую данные Spring для выполнения операций с базой данных и использую эти свойства:

 spring.datasource.url = jdbc:postgresql://ip:port/databaseName?currentSchema=schemeName
spring.datasource.driver-class-name = org.postgresql.Driver
spring.jpa.database = postgresql
spring.datasource.platform = postgresql
spring.datasource.hikari.maximum-pool-size=5
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.username = username
spring.datasource.password = password
 

Комментарии:

1. Создайте таблицу блокировки вручную. Подробности github.com/lukas-krecan/ShedLock#jdbctemplate

Ответ №1:

Вы должны создать таблицу, как описано в документации.