在替换某些地图项时,似乎MapStore(后写模式)无法正常工作。 我预计已经替换的地图项目不再处理。
我正在使用Hazelcast 3.2.5
我在这里想念一下吗?
请参阅服务器测试类,客户端测试类和输出以演示问题。
服务器类:
public class HazelcastInstanceTest {
public static void main(String[] args) {
Config cfg = new Config();
MapConfig mapConfig = new MapConfig();
MapStoreConfig mapStoreConfig = new MapStoreConfig();
mapStoreConfig.setEnabled(true);
mapStoreConfig.setClassName("com.test.TestMapStore");
mapStoreConfig.setWriteDelaySeconds(15);
mapConfig.setMapStoreConfig(mapStoreConfig);
mapConfig.setName("customers");
cfg.addMapConfig(mapConfig);
HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
}
}
MapStore Impl Class
public class TestMapStore implements MapStore {
@Override
public Object load(Object arg0) {
System.out.println("--> LOAD");
return null;
}
@Override
public Map loadAll(Collection arg0) {
System.out.println("--> LOAD ALL");
return null;
}
@Override
public Set loadAllKeys() {
System.out.println("--> LOAD ALL KEYS");
return null;
}
@Override
public void delete(Object arg0) {
System.out.println("--> DELETE");
}
@Override
public void deleteAll(Collection arg0) {
System.out.println("--> DELETE ALL");
}
@Override
public void store(Object arg0, Object arg1) {
System.out.println("--> STORE " + arg1.toString());
}
@Override
public void storeAll(Map arg0) {
System.out.println("--> STORE ALL");
}
}
客户等级
public class HazelcastClientTest {
public static void main(String[] args) throws Exception {
ClientConfig clientConfig = new ClientConfig();
HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);
IMap mapCustomers = client.getMap("customers");
System.out.println("Map Size:" + mapCustomers.size());
mapCustomers.put(1, "Item A");
mapCustomers.replace(1, "Item B");
mapCustomers.replace(1, "Item C");
System.out.println("Map Size:" + mapCustomers.size());
}
}
客户输出(没关系):
地图尺寸:0
地图大小:1
服务器输出(这是不行的,正如我想的那样。我只期望项目C)
- >加载所有钥匙
- > LOAD
- >商店项目A
- >存储所有
- >商店项目B
- >商店项目C
任何帮助都表示赞赏。 非常感谢