Sharafath Ahmed
Sharafath Ahmed

Reputation: 135

Hazelcast IMap TTL Expiry

How to invoke a method to sync the data to some DB or Kafka once the TTL set is expired during the put method of IMap class.

eg:IMap.put(key,value,TTL,TimeUnit.SECONDS);

if the above TTL is set to like 10 seconds i must call some store or some mechanism where i could sync that key and value to DB or Kafka in real time. As of now when i tried the store method it is immediately calling the method instead of 10 seconds wait time.

Upvotes: 2

Views: 2893

Answers (1)

İlker Korkut
İlker Korkut

Reputation: 3250

You may set an EntryExpiredListener to your map config.

It feeds on two sources of expiration based eviction, they are max-idle-seconds and time-to-live-seconds.

Example Listener class:

@Slf4j
public class MyExpiredEntryListener implements EntryExpiredListener<String, String>, MapListener {

    @Override
    public void entryExpired(EntryEvent<String, String> event) {
        log.info("entry Expired {}", event);
    }
}

You can add this config via programmatically or you may set mapconfig via xml config file.

Example usage:

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);
   }
}

You will see the logs like below when running this implementation.

entry Expired EntryEvent{entryEventType=EXPIRED, member=Member [192.168.1.1]:5701 - ca76c6d8-abe0-4efe-a6a6-24330657675b this, name='myMap', key=70ee594c-ffea-4584-aefe-1148b9fcdf9f, oldValue=70ee594c-ffea-4584-aefe-1148b9fcdf9f, value=null, mergingValue=null}

Also, you can use other entry listeners according to your requirements.

Upvotes: 2

Related Questions