@Schedule注解可以在sprintboot项目中定时启动某个方法,但是如果是分布式部署方案,如k8s集群等,每个节点都会运行此方法,就会造成一系列的问题,此时就要用到@SchedulerLock 分布式加锁注解
maven:
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-spring</artifactId>
<version>0.16.1</version>
</dependency>
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-provider-jdbc-template</artifactId>
<version>0.16.1</version>
</dependency>
config配置类:
@Configuration
@EnableScheduling
public class ShedlockConfig {
@Value("${spring.datasource.primary.url}")
private String url;
@Value("${spring.datasource.primary.username}")
private String username;
@Value("${spring.datasource.primary.password}")
private String password;
@Value("${spring.datasource.primary.driver-class-name}"