加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

springboot整合ehcache 实现支付超时限制的方法

发布时间:2020-12-15 01:04:14 所属栏目:C语言 来源:网络整理
导读:下面给大家介绍springboot整合ehcache 实现支付超时限制的方法,具体内容如下所示: dependency groupIdnet.sf.ehcache/groupId artifactIdehcache-core/artifactId version2.6.11/version/dependency pom文件中引入ehcache依赖 在类路径下存放ehcache.xml文

下面给大家介绍springboot整合ehcache 实现支付超时限制的方法,具体内容如下所示:

<dependency>
 <groupId>net.sf.ehcache</groupId>
 <artifactId>ehcache-core</artifactId>
 <version>2.6.11</version>
</dependency>

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 实现支付超时限制的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

您可能感兴趣的文章:

  • springboot+EHcache 实现文章浏览量的缓存和超时更新
  • 详解spring boot集成ehcache 2.x 用于hibernate二级缓存
  • 详解SpringBoot缓存的实例代码(EhCache 2.x 篇)
  • Spring Boot缓存实战 EhCache示例
  • springboot整合EHCache的实践方案
  • spring-boot整合ehcache实现缓存机制的方法

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读