需要在Ignite缓存ExpiryPolicy之前执行代码

Need to execute code before Ignite cache ExpiryPolicy

我正在使用带有 ModifiedExpiryPolicy 的 Ignite 缓存,需要在事件执行之前执行一行代码。有帮助吗?

IgniteCache<String, Object> expiresCache = cache.withExpiryPolicy(new ModifiedExpiryPolicy(new Duration(Time.MINUTES, timeInMins)));

public class ClassName {
public IgnitePredicate<CacheEvent> functionName() {
    return new IgnitePredicate<CacheEvent>() {  
        @Override
        public boolean apply(CacheEvent evt) {
            //code to be executed after event.
            return true;
            }
        };
    }
}

我认为您需要 use events 来监听过期事件。

Ignite ignite = Ignition.ignite();

// Local listener that listenes to local events.
IgnitePredicate<CacheEvent> locLsnr = evt -> {
  System.out.println("Received expiry event [evt=" + evt.name() + ", key=" + evt.key());

  return true; // Continue listening.
};

// Subscribe to specified cache events occuring on local node.
ignite.events().localListen(locLsnr, EventType.EVT_CACHE_OBJECT_EXPIRED);

请注意,这只是一个 local(节点)侦听器,您需要一个远程侦听器来查找远程节点上的到期事件。您还需要在配置文件中配置 includeEventTypes(出于性能原因,默认情况下禁用事件。