0

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

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

任何有助于解决此问题的有用建议都将受到欢迎。我在另一个项目上进行了异步写入,但现在似乎无法让它们工作。谢谢

编辑 在 write-delay-seconds 中指定的延迟之后,将调用存储实现(而不是全部存储)。

4

1 回答 1

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 源代码中查看此代码

于 2013-01-16T17:24:56.033 回答