二、springMVC集成redis实现分布式锁之使用
使用场景:项目需要在同一批次下同时跑两笔申请,但是同一批次下去第三方系统取数据只需要取一次就可以了,因此借用redis分布式锁实现了该功能,具体代码如下:
@Override
@Transactional(rollbackFor = ServiceException.class)
public String creditCardAccDetail(ApplicantInformationTO applicantInformationTO) throws ServiceException {
logger.info("creditCardAccDetail接口 start.................");
String serviceKey =“第三方系统的缩写”;
//获取批次号,两笔申请的批次号是相同的
String batchId=applicantInformationTO.getBatchID();
//组装该数据源存放在redis中的数据源key及该数据源的超时时间
Map<String,Object> datasourceMap = exchangeCommonService.buidDataSourcekey(serviceKey,”GETDATA”,batchId);
String datasourceKey = String.valueOf(datasourceMap.get("DATA_SOURCE_KEY"));
long timeout = Long.valueOf(String.valueOf(datasourceMap.get("TIMEOUT")));
//以datasourceKey为key,尝试加锁,加锁成功,flag为true,false则加锁失败
boolean flag= redisUtils.