getMap()+后续更改以同步地图

时间:2018-10-24 11:37:27

标签: hazelcast hazelcast-jet

我有一个启用了日记功能的IMap。

我想使用客户端(Hazelcast或Jet)获得完整地图,并获取所有后续更新以丰富地图。

我该如何实现?

如果执行.getMap(),然后调用getJournalMap()或.addEntryListener(),则我担心在getMap()和addEntryListener()调用之间缺少更新的可能性。

是否有更直观的方法来获取完整的地图和更新? 谢谢

2 个答案:

答案 0 :(得分:2)

您正在寻找的是Hazelcast的Continues Query Cache功能。请参阅https://docs.hazelcast.org/docs/3.11/manual/html-single/index.html#continuous-query-cache

以下是来自客户端的示例用法

    HazelcastInstance instance = Hazelcast.newHazelcastInstance();

    QueryCacheConfig queryCacheConfig = new QueryCacheConfig("cache");
    PredicateConfig predicateConfig = new PredicateConfig().setImplementation((Predicate) entry -> true);
    queryCacheConfig.setPredicateConfig(predicateConfig);

    ClientConfig clientConfig = new ClientConfig();
    clientConfig.addQueryCacheConfig("map", queryCacheConfig);

    HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);

    IMap<Object, Object> map = client.getMap("map");
    QueryCache<Object, Object> cache = map.getQueryCache("cache");

答案 1 :(得分:0)

当前,事件日志未公开用于读取Hazelcast IMDG中事件日志的公共API。事件日志可用于将事件数据流式传输到Hazelcast Jet,因此应与Hazelcast Jet一起使用。您可以在此处看到一些示例:https://github.com/hazelcast/hazelcast-jet-code-samples/tree/0.7-maintenance/event-journal