提交 a0b786ac 编写于 作者: 檀越@新空间's avatar 檀越@新空间 🐭

fix:需求代码

上级 fcaa2e39
...@@ -41,7 +41,7 @@ public class RedisLockAspect { ...@@ -41,7 +41,7 @@ public class RedisLockAspect {
if (locked) { if (locked) {
if (StringUtils.hasText(lockKey)) { if (StringUtils.hasText(lockKey)) {
redisTemplate.opsForValue().set(lockKey, "locked", redisLock.expire(), TimeUnit.MILLISECONDS); redisTemplate.opsForValue().set(lockKey, "locked", redisLock.expire(), TimeUnit.MILLISECONDS);
redisLockRenewal.scheduleRenewal(lockKey, 20000, redisLock.expire()); redisLockRenewal.scheduleRenewal(lock, lockKey, 20000, redisLock.expire());
} }
return joinPoint.proceed(); return joinPoint.proceed();
} else { } else {
......
...@@ -7,10 +7,10 @@ import org.springframework.stereotype.Component; ...@@ -7,10 +7,10 @@ import org.springframework.stereotype.Component;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
@Component @Component
public class RedisLockRenewal { public class RedisLockRenewal {
private final StringRedisTemplate redisTemplate; private final StringRedisTemplate redisTemplate;
/** /**
* 定时任务线程池 * 定时任务线程池
...@@ -22,11 +22,14 @@ public class RedisLockRenewal { ...@@ -22,11 +22,14 @@ public class RedisLockRenewal {
this.redisTemplate = redisTemplate; this.redisTemplate = redisTemplate;
} }
public void scheduleRenewal(String lockKey, long renewalIntervalMillis, long lockExpireMillis) { public void scheduleRenewal(Lock lock, String lockKey, long renewalIntervalMillis, long lockExpireMillis) {
scheduler.scheduleAtFixedRate(() -> { scheduler.scheduleAtFixedRate(() -> {
try { try {
boolean locked = lock.tryLock(lockExpireMillis, TimeUnit.MILLISECONDS);
if (locked) {
// 续期操作:设置新的过期时间 // 续期操作:设置新的过期时间
redisTemplate.expire(lockKey, lockExpireMillis, TimeUnit.MILLISECONDS); redisTemplate.expire(lockKey, lockExpireMillis, TimeUnit.MILLISECONDS);
}
} catch (Exception e) { } catch (Exception e) {
// 处理续期失败的情况,可以记录日志或采取其他操作 // 处理续期失败的情况,可以记录日志或采取其他操作
e.printStackTrace(); e.printStackTrace();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册