pom添加依賴:java
<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注入git
@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配置github
添加@SchedulerLock到定時器業務方法入口redis
@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/ShedLockspring