如何使用MapStore实现将hazelcast存储在我的数据库中

时间:2012-08-03 12:03:02

标签: java hazelcast

我实施了MapStore并配置了hazelcast(v 2.2),以便在调用map.put()时知道它必须从我的实施中调用后台.store,至少那个我读到了什么。

如果我直接使用我的实现,它会存储我想要的内容,但如果我调用map.put()则不会。 有人可以告诉我它为什么没有或者我做错了什么?

这是我的MapStore实施:

public class MyMapStore implements MapStore<String, Object> {

private Session session = HibernateUtil.openSession();

@Override
public Object load(String key) {
            // TODO Auto-generated method stub
            return null;
}

@Override
public Map<String, Object> loadAll(Collection<String> keys) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public Set<String> loadAllKeys() {
    // TODO Auto-generated method stub
    return null;
}

@Override
public void store(String key, Object value) {
    Transaction tx = session.beginTransaction();
    session.save((MyObject)value);
    tx.commit();
}

@Override
public void storeAll(Map<String, Object> map) {
    // TODO Auto-generated method stub
}

@Override
public void delete(String key) {
            // TODO Auto-generated method stub
}

@Override
public void deleteAll(Collection<String> keys) {
    // TODO Auto-generated method stub
}
}

Hazelcast配置:

h.getConfig().getMapConfig("default").setMapStoreConfig(
    new MapStoreConfig().setEnabled(true).setClassName(
    MyMapStore.class.getName()).setWriteDelaySeconds(0));

打印淡褐色配置告诉我所有设置都在那里,所以我不知道出了什么问题。

1 个答案:

答案 0 :(得分:2)

我认为你的hazelcast配置中缺少一些东西。您需要创建“默认”MapConfig。这是一个有效的例子。

Config config = new Config();

    ....


MapConfig mapCfg = new MapConfig();
mapCfg.setName("default");
mapCfg.setBackupCount(2);
mapCfg.getMaxSizeConfig().setSize(10000);
mapCfg.setTimeToLiveSeconds(300);

MapStoreConfig mapStoreCfg = new MapStoreConfig();
mapStoreCfg.setClassName(MyMapStore.class.getName()).setEnabled(true);
mapCfg.setMapStoreConfig(mapStoreCfg);

// use near cache if needed
NearCacheConfig nearCacheConfig = new NearCacheConfig();
nearCacheConfig.setMaxSize(1000).setMaxIdleSeconds(120).setTimeToLiveSeconds(300);
mapCfg.setNearCacheConfig(nearCacheConfig);

config.addMapConfig(mapCfg);

Hazelcast.newHazelcastInstance(config);