1

我有一个启用了日志的 IMap。

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

我怎么能做到这一点?

如果执行 .getMap(),然后调用 getJournalMap() 或 .addEntryListener(),我担心在 getMap() 和 addEntryListener() 调用之间可能会丢失更新。

有没有更直观的方式来获得完整的地图+更新?谢谢

4

2 回答 2

3

您正在寻找的是Continues Query CacheHazelcast 的功能。请参阅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");
于 2018-10-24T12:18:12.007 回答
0

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

于 2018-10-24T12:00:55.320 回答