hazelcast storeall没有被调用

时间:2013-01-10 23:45:33

标签: java hazelcast

我正在使用hazelcast(v2.1.3) - 在地图的storeload中,“store”不断被调用而不是“store all”(即使写入延迟秒标志大于0):

<map-store enabled="true">
<class-name>test.test.abcMap</class-name>
<write-delay-seconds>5</write-delay-seconds> 
</map-store>

任何有用的建议都可以帮助解决这个问题。我让asynch在一个不同的项目上工作,但似乎无法让他们现在正常工作。感谢

修改 在write-delay-seconds指定的延迟之后,将调用存储实现(而不是存储all)。

1 个答案:

答案 0 :(得分:2)

您确定您需要存储多个条目吗?

如果地图中只添加或更新了一个条目,即使您启用了后写,也会调用MapStore.store(key, value)。只有在需要存储多个条目时才会调用MapStore.storeAll(map)

以下是来自com.hazelcast.impl.CMap.runStoreUpdate()的相关代码(成员store的类型为MapStore):

if (updates.size() == 1) {
    Map.Entry entry = updates.entrySet().iterator().next();
    store.store(entry.getKey(), entry.getValue());
} else if (updates.size() > 1) {
    store.storeAll(updates);
}

同样适用于MapStore.delete()MapStore.deleteAll()

您可以在Github的Hazelcast source

中查看此代码