Hazelcast使用map.replace后写

时间:2014-08-25 14:53:00

标签: hazelcast

在替换某些地图项时,似乎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

任何帮助都表示赞赏。 非常感谢

0 个答案:

没有答案