首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在单个节点上执行Hazelcast分布式地图处理器

在单个节点上执行Hazelcast分布式地图处理器
EN

Stack Overflow用户
提问于 2018-10-02 09:55:29
回答 1查看 373关注 0票数 1

我在Spring应用程序中使用了Hazelcast,它支持高可用性,它有4个相同逻辑的实例,它们作为活动活动运行。所有4个都共享一个分布式对象映射。

由于用户操作(对特定控制器的访问),我在共享地图上触发一个EntryProcessor (map.submitToKey)。我认为这样的操作只会在单个节点上运行处理器一次,但是所有4个节点都会同时运行同一处理器。

是否有选项可以在单个节点上执行分布式映射的EntryProcessor?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-02 14:30:41

如果您的地图不需要任何备份,那么EntryProcessor可以安全地从getBackupProcessor()返回null。当返回null时,备份节点将不会执行任何EntryBackupProcessor

否则,如果为map配置了备份,但返回了EntryBackupProcessorEntryBackupProcessor,则条目将不会复制到备份节点。它将被视为没有为map配置的备份。主备份和备份最终将变得不一致。当主崩溃时,您将失去EntryProcessor所做的更新。

在这种情况下,如果需要备份,可以编写一个自定义EntryBackupProcessor,它可以复制主EntryProcessor的执行结果,而不是执行EntryProcessor的逻辑。

代码语言:javascript
复制
class CustomEntryBackupProcessor implements EntryBackupProcessor {

    private Object resultOfEntryProcessor;

    @Override
    public void processBackup(Map.Entry entry) {
        entry.setValue(resultOfEntryProcessor);            
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52606016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档