Я использую Hazelcast с распределенным кешем во встроенном режиме. Мой кеш определяется политикой выселения и политикой истечения срока действия.
CacheSimpleConfig cacheSimpleConfig = new CacheSimpleConfig()
.setName(CACHE_NAME)
.setKeyType(UserRolesCacheKey.class.getName())
.setValueType((new String[0]).getClass().getName())
.setStatisticsEnabled(false)
.setManagementEnabled(false)
.setReadThrough(true)
.setWriteThrough(true)
.setInMemoryFormat(InMemoryFormat.OBJECT)
.setBackupCount(1)
.setAsyncBackupCount(1)
.setEvictionConfig(new EvictionConfig()
.setEvictionPolicy(EvictionPolicy.LRU)
.setSize(1000)
.setMaximumSizePolicy(EvictionConfig.MaxSizePolicy.ENTRY_COUNT))
.setExpiryPolicyFactoryConfig(
new ExpiryPolicyFactoryConfig(
new TimedExpiryPolicyFactoryConfig(ACCESSED,
new DurationConfig(
1800,
TimeUnit.SECONDS))));
hazelcastInstance.getConfig().addCacheConfig(cacheSimpleConfig);
ICache<UserRolesCacheKey, String[]> userRolesCache = hazelcastInstance.getCacheManager().getCache(CACHE_NAME);
MutableCacheEntryListenerConfiguration<UserRolesCacheKey, String[]> listenerConfiguration =
new MutableCacheEntryListenerConfiguration<>(
new UserRolesCacheListenerFactory(), null, false, false);
userRolesCache.registerCacheEntryListener(listenerConfiguration);
Проблема, с которой я сталкиваюсь, заключается в том, что мой Listener, кажется, преждевременно срабатывает в производственной среде; прослушиватель выполняется (УДАЛЕН), даже если кеш был недавно запрошен.
Когда срабатывает прослушиватель срока действия, я получаю CacheEntry, но я хотел бы видеть причину истечения срока действия, независимо от того, было ли оно выселено (из-за политики MaxSize) или истекло (длительность). Если истек, я хотел бы увидеть отметку времени, когда к нему в последний раз обращались. Если выселено, я хотел бы видеть количество записей в кеше и т. д.
Доступны ли эти статистические данные/метрики/метаданные где-либо через API Hazelcast?