数据库锁:分布式锁——@SchedulerLock

网友投稿 902 2023-04-03

数据库锁:分布式锁——@SchedulerLock

数据库锁:分布式锁——@SchedulerLock

SpringBoot之数据库锁-@SchedulerLock

分布式锁ShedLock确保计划的任务最多同时执行一次。如果一个任务正在一个节点上执行,它会获得一个锁,该锁将阻止从另一个节点(或线程)执行同一任务。请注意,如果一个任务已经在一个节点上执行,则在其他节点上的执行不会等待,只会跳过它。就是当第一个微服务执行定时任务的时候,会定时任务进行锁操作,然后其他的定时任务就不会再执行,锁操作有一定的时长,超过这个时长以后,再一次,所有的定时任务进行争抢下一个定时任务的执行权限,如此循环。保证了即使是其中的一个定时任务挂掉了,到一定的时间以后,锁也会释放,其他的定时任务依旧会进行执行权的争夺,执行定时任务。

使用方式(Springboot)

1.gradle方式引入依赖

compile('net.javacrumbs.shedlock:shedlock-provider-jdbc-template:2.1.0') compile('net.javacrumbs.shedlock:shedlock-spring:2.2.0') Maven方式

net.javacrumbs.shedlock shedlock-spring 2.1.0 net.javacrumbs.shedlock shedlock-provider-jdbc-template 2.2.0 2.启用SchedulerLock

@Scheduled(cron = "0 0/5 * * * *") //五分钟执行一次 @SchedulerLock(name = "ClusterDataDs", lockAtLeastFor = HsConstants.LOCKEDLEASTTIME, lockAtMostFor = HsConstants.LOCKEDMOSTTIME) public void ClusterDataDs(){ }//在所需要方法的上面加@SchedulerLock注解

3.在数据库里加上创建提供锁的外部存储表(shedlock)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Nosql数据库的四大分类及分布式数据库CAP原理
下一篇:将不确定变为确定~transactionscope何时提升为分布式事务?(sql2005数据库解决提升到MSDTC的办法)
相关文章