String alock = deviceStatusSyncParam.getSn();
APIResult res = new APIResult();
RLock lock = redissonClient.getLock(alock);
boolean getLock = false;
try {
if (getLock = lock.tryLock(120, TimeUnit.SECONDS)) {
logger.info("start time:" + DateUtils.format(new Date()));
logger.info("Redisson获取到分布式锁:{},ThreadName:{}", alock, Thread.currentThread().getName());
String redisCompanyCode = Optional.ofNullable(stringRedisTemplate.opsForHash().get(RedisKey.getDeviceInfo(deviceStatusSyncParam.getSn()), RedisKey.DeviceField.companyCode.name()))
.map(Object::toString).orElse(StringUtils.EMPTY);
logger.info("[companyCode] io同步的公司编码:" + deviceStatusSyncParam.getCompanyCode());
logger.info("[redisCompanyCode] redis的公司编码:" + deviceStatusSyncParam.getCompanyCode());
logger.info("[syncStatus] io同步的状态:" + syncStatus);
if (!(!deviceStatusSyncParam.getCompanyCode().equals(redisCompanyCode) && syncStatus.equals(-1))) {
logger.info("执行device缓存的更新操作");
this.cache(Collections.singletonList(device), CurdEnum.UPDATE, deviceStatusSyncParam.getCompanyCode());
}
Thread.sleep(60000);
System.out.println("sleeping ... ");
logger.info("end time:" + DateUtils.format(new Date()));
} else {
logger.info("Redisson没有获取到分布式锁:{},ThreadName:{}", alock, Thread.currentThread().getName());
}
} catch (InterruptedException e) {
logger.error("Redisson分布式锁获取异常", e);
} finally {
if (!getLock) {
return;
}
lock.unlock();
logger.info("Redisson分布式锁释放锁");
}
}
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.10.7</version>
<exclusions>
<exclusion>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-data-21</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-data-20</artifactId>
<version>3.10.7</version>
</dependency>
网友评论