1

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 を使用して実現可能ですか?

4

1 に答える 1