SpringBoot使用shedlock做定时任务的实现示例
目录
- 1、pom依赖
- 2、shedlock使用Redis锁
- 3、配置定时任务线程池
- 4、定时任务代码
1、pom依赖
<dependency> <groupId>net.Javacrumbs.shedlock</groupId> <artifactId>shedlock-spring</artifactId> <version>4.15.1&phplt;/version> </dependency> <dependency> <groupId>net.javacrumbs.shedlock</groupId> <artifactId>shedlock-provider-redis-spring</artifactId> <version>4.15.1</version> </dependency>
2、shedlock使编程客栈用Redis锁
解决多实例下任务重复执行问题。
@Configuration public class ScheduleLockConfig { @Bean public LockProvider lockProvider(RedisConnectionFactory redisConnectionFactory) { return new RedisLockProvider(redisConnectionFactory); } }
3、配置定时任务线程池
解决多任务并发执行时等待问题。
@Configuration public class ScheduleConfig implements SchedulinandroidgConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.setPoolSize(10); taskScheduler.setThreadNamePrefix("taskScheduler-"); taskRegistrar.setScheduler(taskScheduler); } }
4、定时任务代码
@Configuration public class ScheduleTask { /** * Concurrent task 1. */ @Sche编程客栈duled(cron = "0/5 * * * * ?") @SchedulerLock(name = "syncTask1") public void syncTask1() throws InterruptedException { System.err.println("并发执行任务1: " + LocalDateTime.now()); Thread.sleep(7000); } /** * Concurrent task 2. */ @Scheduled(cron = "0/5 * * * * ?") @SchedulerLock(name = "syncTask2") public void syncTask2() { System.err.println("并发执行任务2: " + LocalDateTime.now()); } }
到此这篇关于SpringBoot使用shedlock做定时任务的实现示例的文章就介绍到这了,更多相关SpringBoot shedlock定时任务内容请搜索编程客栈(www.cppcns.cojavascriptm)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论