スプリングブートをehcacheに統合して、支払いタイムアウト制限を達成する方法は次のとおりです。特定のコンテンツは次のとおりです。
<Dependency> GroupId> net.sf.ehcache </groupid> <artifactid> ehcache-core </artifactid> <バージョン> 2.6.11 </version> </dependency>
POMファイルにehcache依存関係を紹介します
ehcache.xmlファイルをClassPathに保存します。
application.xmlで指定:
スプリング:キャッシュ:jcache:config:classpath:ehcache.xml
クラスアノテーション@enablecaching
コアコードを実装します
/**ユーザー支払いのタイムスタンプを記録*/public void pinuser(object userkey)スロー例外{cache cache = manager.getcache(cachename);要素要素= cache.get(userkey); if(element == null){ /*ユーザーの支払いレコードが見つかっていない場合、レコードはキャッシュされてから続行* / ements 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 eavid unpinuser(object urseChene(objectCache); cache.remove(userkey);}/ * *キャッシュ構成を取得して、ユーザーが待つ必要がある時間を変換するため、よりフレンドリーな待機時間プロンプトが得られます。 */private long gettimetolive(){cache cache = manager.getcache(cachename); cache.getCacheConFiguration()。getTimeToliveseConds();}使用
PayToken.getInstance().pinUser(user.getKey())を呼び出してください。ここで、支払いインターフェイスが呼び出されます。例外がスローされている場合、支払い間隔が小さすぎることを意味します。同時に、追加のデータ操作がある場合、例外をスローすることもロールバック操作をトリガーする可能性があります。
システムの理由により実行が失敗した場合、ユーザーがまだ待機する必要があるのは不合理です。したがって、ユーザーのレコードを削除するために追加されますPayToken.getInstance().unPinUser(user.getKey()) 。
要約します
上記は、ehcacheを統合して、編集者が紹介した支払いタイムアウト制限を実現するスプリングブートの方法です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!