下面给大家介绍springboot整合ehcache 实现支付超时限制的方法,具体内容如下所示:
net.sf.ehcache ehcache-core2.6.11
pom文件中引入ehcache依赖
在类路径下存放ehcache.xml文件。
application.xml中指定:
spring: cache: jcache: config: classpath:ehcache.xml
类标注@EnableCaching
实现核心代码
public void pinUser(Object userKey) throws Exception{
Cache cache = manager.getCache(cacheName);
Element element = cache.get(userKey);
if(element == null){
Element newE = new Element(userKey, new Date().getTime());
cache.put(newE);
} else {
long inTime = (Long) element.getObjectValue();
long timeToWait = (getTimeToLive() - (new Date().getTime() - inTime)/1000);
//提示需要等待的时间
throw new Exception(String.format("还需等待%s秒",String.valueOf(timeToWait)));
}
}
public void unPinUser(Object userKey) {
Cache cache = manager.getCache(cacheName);
cache.remove(userKey);
}
private long getTimeToLive(){
Cache cache = manager.getCache(cacheName);
return cache.getCacheConfiguration().getTimeToLiveSeconds();
}
使用
在调用支付接口的地方调用PayToken.getInstance().pinUser(user.getKey())即可,若抛出异常,即说明支付间隔时间太小,同时如果还有附加数据操作,抛出异常亦可以触发回滚操作。
若是系统原因导致执行失败而仍需用户等待是不合理的,因此增加了解除用户记录的方法PayToken.getInstance().unPinUser(user.getKey())。
总结
以上所述是小编给大家介绍的springboot整合ehcache 实现支付超时限制的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对考高分网网站的支持!



