Apache为缓存事件点燃单个缓存(映射)事件注册

时间:2016-02-27 22:07:35

标签: java events caching ignite

我正在寻找一种通过点燃来注册单个缓存的缓存事件的方法。

可以使用此代码注册所有点燃环境的put事件;

        IgniteBiPredicate<UUID, CacheEvent> lsnr = new IgniteBiPredicate<UUID, CacheEvent>() {
                @Override public boolean apply(UUID uuid, CacheEvent evt) {
                    System.out.println("Received event [evt=" + evt.name() + ", key=" + evt.key() +
                        ", oldVal=" + evt.oldValue() + ", newVal=" + evt.newValue());

                    return true; // Continue listening.
                }
            };
    ignite.events().localListen(lsnr, EventType.EVT_CACHE_OBJECT_PUT);

但是由于性能原因,我想仅为特定地图(缓存)注册缓存事件。否则,我将不得不检查每个事件的缓存名称,这可能会导致具有大量事务的系统承受巨大负载。

感谢您提供任何帮助和指导。

1 个答案:

答案 0 :(得分:1)

如果您想收听数据更新,连续查询是更好的选择:https://apacheignite.readme.io/docs/continuous-queries

此功能适用于每个缓存级别,支持正确的事件排序,并保证在拓扑更改时交付。