Вы можете установить EntryExpiredListener для вашей конфигурации карты.
Он питается от двух источников истечения, основанного на истечении срока действия, это max-idle-seconds
и time-to-live-seconds
.
Пример класса слушателя:
@Slf4j
public class MyExpiredEntryListener implements EntryExpiredListener<String, String>, MapListener {
@Override
public void entryExpired(EntryEvent<String, String> event) {
log.info("entry Expired {}", event);
}
}
Вы можете добавить эту конфигурацию программно или установить mapconfig через xml файл конфигурации.
Пример использования:
public static void main(String[] args) {
Config config = new Config();
MapConfig mapConfig = config.getMapConfig("myMap");
mapConfig.setTimeToLiveSeconds(10);
mapConfig.setEvictionPolicy(EvictionPolicy.RANDOM);
HazelcastInstance hz = Hazelcast.newHazelcastInstance(config);
IMap<String, String> map = hz.getMap("myMap");
map.addEntryListener(new MyExpiredEntryListener(), true);
for (int i = 0; i < 100; i++) {
String uuid = UUID.randomUUID().toString();
map.put(uuid, uuid);
}
}
Вы увидите журналы как показано ниже при запуске этой реализации.
entry Expired EntryEvent {entryEventType = EXPIRED, member = Member [192.168.1.1]: 5701 - ca76c6d8-abe0-4efe-a6a6-24330657675b this, name = 'myMap ', ключ = 70ee594 c -ffea-4584-aefe-1148b9fcdf9f, oldValue = 70ee594 c -ffea-4584-aefe-1148b9fcdf9f, значение = ноль, mergingValue = ноль}
также , вы можете использовать других слушателей записи в соответствии с вашими требованиями.