次のguavaキャッシュを使用して、応答を待つ特定の時間のメッセージを保存します。私はシャットダウン にその現在の「タイムアウト」情報とのメッセージを保持し、内部はすでにあたりの時間を有効期限が切れて起動時にそれを復元する必要が最後にシャットダウン時にguavaキャッシュを維持する
Cache cache = CacheBuilder.newBuilder().expireAfterWrite(7, TimeUnit.DAYS).build();
cache.put(id,message);
...
cache.getIfPresent(id);
:だから私はより多くのメッセージのタイムアウトのようにキャッシュを使用しますエントリ。私は時間情報にアクセスする方法を見つけることができなかったので、私はそれを自分で処理することができます。
gauva wikiは言う:
あなたのアプリケーションがRAMに収まるれるものよりも多くのデータを保存する必要はありません。 (Guavaのキャッシュは、アプリケーションの1回実行にローカルであり、ファイルや外部のサーバーにデータを格納しません)必要がない場合は、Memcachedのようなツールを検討してください。
この制限は、「シャットダウン時にも持続するタイムアウト」マップにも対処していますか?
キャッシュ全体をシリアライズしようと思っている場合、それは機能しません:「CacheBuilderによって生成されたキャッシュはシリアライズ可能であり、非シリアライズされたキャッシュは元のキャッシュのすべての構成プロパティを保持します。キャッシュの内容を含めるが、構成のみを含む。だから、Guava Cacheを、あなたが引用したwikiが示唆するように、より完全なキャッシュ実装に置き換える必要があるでしょう。 – Thilo
あなたはキーワードをシリアライズするのは間違いありません。申し訳ありませんが、私はそれを直接使用しませんでした。 キャッシュから期限切れの時間情報を取得する方法はありますか? – Kuhpid