【问题标题】:How Hazelcast queries work when MapStore is specified?指定 MapStore 时 Hazelcast 查询如何工作?
【发布时间】:2021-05-17 17:04:05
【问题描述】:

我有包含活动会话的榛树地图。我完全实现了从 MongoDB 加载和存储文档的 MapStore。 现在我需要执行分布式查询来处理地图中的所有条目,但是当 Hazelcast 从集合中驱逐条目时,不会检查持久化的条目。

以这种方式处理所有条目的正确方法是什么?

我是否需要为 Hazelcast 和 MongoDB 中的持久条目编写两个版本的查询?

是否有可配置的收集行为以使 Hazelcast 将存储中的所有条目同步到地图中?

【问题讨论】:

    标签: hazelcast hazelcast-imap


    【解决方案1】:

    Hazelcast 查询不会从 MapLoader 获取任何内容。如果您知道被驱逐的条目(尽管我不确定这样做的真正目的是什么,因为它与首先使用内存缓存的原因相矛盾),那么您可以在运行之前对这些键执行getAll询问。这会将那些“丢失”的条目加载回缓存中。

    【讨论】:

    • 真正的目的是在会话被从地图中驱逐并且不再加载时关闭会话的能力。关闭会话意味着在另一个存储中创建记录。如果我只使用 Hz 查询,则被驱逐的会话将永远不会记录到存储中。否则,如果我只查询由 MapStore 包装的存储,我还需要查询 Map 以删除记录。 getAll 假设我知道密钥但我不知道。
    • 您可以使用 EntryExpiredListener 和/或 EntryEvictedListener 并记录所有过期/驱逐的条目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多