Hazelcast 3.12 jCache 実装を使用しています。私のキャッシュは (hazelcast-config.xml を介して) 宣言的に宣言されていますが、タイムアウト値はプログラムでしか利用できないため、ExpiryPolicy の期間を動的に変更できるようにしたいと考えています。
ICache のドキュメントを見てきましたが、キャッシュ全体の有効期限ポリシーを取得および/または変更できる方法はありません。
私のキャッシュは次のように宣言されています:
<cache name="toto">
<async-backup-count>1</async-backup-count>
<backup-count>1</backup-count>
<cache-entry-listeners>
<cache-entry-listener old-value-required="true">
<cache-entry-listener-factory class-name="cache.UserRolesEntryListenerStaticFactory"/>
</cache-entry-listener>
</cache-entry-listeners>
<key-type class-name="java.lang.String"/>
<management-enabled>true</management-enabled>
<statistics-enabled>true</statistics-enabled>
<quorum-ref>1</quorum-ref>
<partition-lost-listeners></partition-lost-listeners>
</cache>
そして、次のように取得されたときに有効期限ポリシーを設定/更新したいと思います:
@Produces
@Singleton
@UserRolesCache
public Cache<String, String[]> createUserRoleCache(@HazelcastDistributed CacheManager cacheManager) {
Cache cache = cacheManager.getCache("toto");
// get expiry timeout from a 3rd service
int timeout = configService.getCacheExpiry();
// how to set the expiry policy here???
// cache.setExpiryPolicy(.....) ?????
}
これは、jCache または Hazelcast API を使用して実現可能ですか?