1. 概述
在JPAAS平台中,有些情况下需要使用分布式锁,将资源锁定,在执行业务操作,比如流水号这种情况,必须保证同一个时刻,只有一个请求可以进入。
2. 平台使用分布式锁的方法
@Resource
RedisLockRegistry redisLockRegistry;
public String genSeqNo(String alias) {
String key=LOCK_KEY_SYSSQLID +alias;
Lock lock = redisLockRegistry.obtain(key);
boolean rtn=false;
try{
rtn= lock.tryLock(5, TimeUnit.SECONDS);
//业务操作
return "-1";
} catch (Exception e) {
e.printStackTrace();
return "0";
} finally {
if(rtn){
lock.unlock();
}
}
}
这里有个小技巧,我们对每一个流水号,产生锁,而不是对所有的流水号获取锁,这样增加了锁的并发度。
文档更新时间: 2021-11-02 16:18 作者:zyg