1、pom依赖
<dependency> <groupid>net.javacrumbs.shedlock</groupid> <artifactid>shedlock-spring</artifactid> <version>4.15.1</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 schedulingconfigurer { @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. */ @scheduled(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定时任务内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论