【发布时间】:2012-09-26 06:32:25
【问题描述】:
我们使用 Hazelcast 2.3.1,在我们的 hazelcast.xml 配置文件中,我们 对 Hazelcast IMap 使用 write behind:
<map name="HazelcastObjectOperations.objectMap">
<backup-count>1</backup-count>
<map-store enabled="true">
<class-name>persister.HazelcastObjectPersister</class-name>
<write-delay-seconds>10</write-delay-seconds>
</map-store>
</map>
<properties>
<property name="hazelcast.map.cleanup.delay.seconds">5</property>
</properties>
我们有两个班级
-
HazelcastObjectOperation持有地图并且是 用于将物体放入其中。 -
使用了扩展 MapStore 的
HazelcastObjectPersister在 Hazelcast 调用storeAll()时保留对象。
public class HazelcastObjectOperation {
protected final IMap<Long, MyHzcObj> objectMap;
private final HazelcastInstance instance;
public HazelcastObjectOperation() {
this.instance = Hazelcast.getDefaultInstance();
this.objectMap = this.instance.getMap("HazelcastObjectOperations.objectMap" );
}
public void save( final MyHzcObj object ) {
long start = System.currentTimeMillis();
IdGenerator generator = Hazelcast.getIdGenerator("generator");
this.objectMap.put( generator.newId(), object );
long end = System.currentTimeMillis();
}
}
问题在于 Hazelcast 运行此地图并获取 应该存储在持久化器的 storeAll 方法中的对象 类,地图被锁定几秒钟,因此放入此地图持续 这次。这个问题有解决办法吗?
【问题讨论】: