【发布时间】:2014-01-27 11:03:26
【问题描述】:
我正在使用地图存储将我的 hazelcast 分布式地图保存在数据库中。
在我的测试用例中,我启动了三个 hazelcast 实例,每个实例的配置方式相同:
Config cfg = new Config();
cfg.setInstanceName("name");
hazelcast = Hazelcast.newHazelcastInstance(cfg);
MapConfig mapConfig = new MapConfig("myMapName");
MapStoreConfig mapStoreConfig = new MapStoreConfig();
mapStoreConfig.setClassName(MyMapStore.class.getName());
mapStoreConfig.setWriteDelaySeconds(0);
mapStoreConfig.setEnabled(true);
mapConfig.setMapStoreConfig(mapStoreConfig);
mapConfig.setBackupCount(2);
hazelcast.getConfig().addMapConfig(mapConfig);
IMap myMap = hazelcast.getMap("myMapName");
但是,当我向地图添加值时,只有第一个集群成员写入数据库,MapStoreConfig 只是在其他节点上设置为默认值。 但是,如果我将代码更改为以下内容,它可以工作:
Config cfg = new Config();
cfg.setInstanceName("name");
MapConfig mapConfig = new MapConfig("myMapName");
MapStoreConfig mapStoreConfig = new MapStoreConfig();
mapStoreConfig.setClassName(MyMapStore.class.getName());
mapStoreConfig.setWriteDelaySeconds(0);
mapStoreConfig.setEnabled(true);
mapConfig.setMapStoreConfig(mapStoreConfig);
mapConfig.setBackupCount(2);
cfg.addMapConfig(mapConfig);
hazelcast = Hazelcast.newHazelcastInstance(cfg);
IMap myMap = hazelcast.getMap("myMapName");
似乎hazelcast.getConfig().addMapConfig(mapConfig); 行被忽略了。
使用 hazelcast v3.1.5 测试。
【问题讨论】: