需要在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
(出于性能原因,默认情况下禁用事件。
我正在使用带有 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
(出于性能原因,默认情况下禁用事件。