You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hazelcast客户端如何监听集群中Map的更新通知?

实现Hazelcast服务端-客户端架构及Map更新通知

一、从嵌入式部署迁移到服务端-客户端架构

  • 拆分原WAR包中的嵌入式Hazelcast节点,单独部署为独立Hazelcast服务端集群:
    • 移除WAR内的Hazelcast节点启动配置,将服务端集群配置单独部署,确保节点正常组成集群。
    • 原WAR应用改为客户端模式,引入hazelcast-client依赖,通过客户端配置连接到服务端集群。

二、实现Map更新全局通知

要让所有客户端接收READ_ONLY_MAP的更新通知,需为客户端注册EntryListener:

1. 自定义EntryListener实现

public class MapUpdateListener implements EntryAddedListener<String, Object>, 
                                      EntryUpdatedListener<String, Object>,
                                      EntryRemovedListener<String, Object> {

    @Override
    public void entryAdded(EntryEvent<String, Object> event) {
        processUpdate(event);
    }

    @Override
    public void entryUpdated(EntryEvent<String, Object> event) {
        processUpdate(event);
    }

    @Override
    public void entryRemoved(EntryEvent<String, Object> event) {
        processUpdate(event);
    }

    private void processUpdate(EntryEvent<String, Object> event) {
        System.out.println("收到Map更新 - 键: " + event.getKey() 
            + ", 旧值: " + event.getOldValue() 
            + ", 新值: " + event.getValue());
        // 此处添加业务处理逻辑
    }
}

2. 客户端注册监听器

在客户端初始化时绑定监听器:

// 初始化Hazelcast客户端,连接服务端集群
HazelcastInstance client = HazelcastClient.newHazelcastClient(
    new ClientConfig()
        .setClusterName("your-cluster-name")
        .addAddress("hazelcast-server-ip:5701")
);

IMap<String, Object> readOnlyMap = client.getMap("READ_ONLY_MAP");
// 注册监听器,true表示携带值信息触发通知
readOnlyMap.addEntryListener(new MapUpdateListener(), true);

3. 关键注意点

  • 服务端集群与客户端需使用相同集群名称,且网络互通(开放Hazelcast默认端口5701)。
  • 所有注册了该监听器的客户端,无论哪个客户端触发READ_ONLY_MAP的增、删、改操作,都会收到通知。

内容的提问来源于stack exchange,提问作者Pranjal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:57:22