다음은 SpringBoot를 Ehcache에 통합하여 결제 시간 초과 한도를 달성하는 방법입니다. 특정 내용은 다음과 같습니다.
<pectionency> <groupid> net.sf.ehcache </groupid> <artifactid> ehcache-core </artifactid> <버전> 2.6.11 </version> </fectionency>
POM 파일에 ehcache 종속성을 소개하십시오
ehcache.xml 파일을 클래스 경로 아래에 저장하십시오.
Application.xml에 지정 :
스프링 : 캐시 : jcache : config : classpath : ehcache.xml
클래스 주석 @EnableCaching
핵심 코드를 구현하십시오
/** 사용자 지불의 타임 스탬프를 기록*/공개 void pinuser (Object UserKey)는 예외 {cache cache = manager.getCache (Cachename); 요소 요소 = 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); // 대기 시간은 새로운 예외를 던지는 메시지가 표시됩니다 (String.format ( "여전히 %s 초를 기다려야합니다", String.valueof (timetowait))); }}/ * * 사용자 지불의 타임 스탬프 삭제 (이 방법은 내부 결제가 시스템에서 실패 할 때 사용자의 결제 기록을 수동으로 제거하는 데 사용됩니다. 따라서 사용자의 시도에 다시 영향을 미치지 않도록이 방법은 호출되지 않아야하지만 캐시 타임 아웃 */public void unpinuser (object usery) {Cache Cache = Manager.GetCache (Cachename); cache.remove (userkey);}/ * * 캐시 구성을 가져와 사용자가 여전히 대기 해야하는 시간을 변환하므로보다 친숙한 대기 시간 프롬프트가 제공됩니다. */private long gettimetolive () {캐시 캐시 = manager.getCache (캐시 이름); return cache.getCacheConfiguration (). getTimetoliveseconds ();}사용
결제 인터페이스가 호출되는 PayToken.getInstance().pinUser(user.getKey()) 로 전화하십시오. 예외가 발생하면 지불 간격이 너무 작다는 것을 의미합니다. 동시에 추가 데이터 작업이있는 경우 예외를 던지면 롤백 작동이 트리거 될 수 있습니다.
시스템의 이유로 인해 실행이 실패하는 경우에도 여전히 사용자가 대기 해야하는 것은 불합리합니다. 따라서 사용자의 레코드를 제거하기 위해 추가됩니다 PayToken.getInstance().unPinUser(user.getKey()) .
요약
위는 Ehcache를 통합하여 SpringBoot를 통합하여 편집자가 귀하에게 소개 한 지불 시간 초과 제한을 달성하는 방법입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!