pom添加依赖:
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-spring</artifactId>
<version>0.17.0</version>
</dependency>
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-provider-jedis</artifactId>
<version>0.17.0</version>
</dependency>
添加SpringBean注入
@Bean
public ScheduledLockConfiguration taskScheduler(LockProvider lockProvider) {
return ScheduledLockConfigurationBuilder
.withLockProvider(lockProvider)
.withPoolSize(10)
.withDefaultLockAtMostFor(Duration.ofMinutes(10))
.build();
}
@Bean
public LockProvider lockProvider() {
String property = env.getProperty("spring.redis.host");
Integer valueOf = Integer.valueOf(env.getProperty("spring.redis.port"));
JedisPool jedisPool = new JedisPool(property, valueOf);
return new JedisLockProvider(jedisPool);
}
添加@EnableScheduling到SpringBoot配置
添加@SchedulerLock到定时器业务方法入口
@Scheduled(cron = "0/15 * * * * ?")
@SchedulerLock(name = "scheduledTaskName", lockAtMostFor = 9000, lockAtLeastFor = 9000)
public void processItem() throws InterruptedException {
log.warn("@Scheduled service");
Thread.sleep(2000);
}
ShedLock项目地址:https://github.com/lukas-krecan/ShedLock