我正在使用Hazelcast 3.2.3(点对点模式 - 但现在在一个节点上进行测试)。
我已通过XML配置文件将以下商店加载实现附加到地图:
<map-store enabled="true">
<class-name>test.TestStoreLoadImpl</class-name>
<write-delay-seconds>0</write-delay-seconds>
</map-store>
然而,当调用存储负载时,似乎为所接收的密钥集合中的每个值调用load all,即如果集合具有5个整数,则所有负载都被调用5次(而不是被调用一次)然后我应该遍历集合来获取适当的值,将它们添加到hashmap并返回)。知道我做错了吗?
//public class TestStoreLoad implements MapStore<Integer, Test>, MapLoader<Integer, Test>, MapLoaderLifecycleSupport {
public class TestStoreLoad implements MapStore<Integer, Test>, MapLoader<Integer, Test> {
//returns 5 keys in one collection
@Override
public Set<Integer> loadAllKeys()
//however the load all gets called 5 times instead of 1
@Override
public Map<Integer, Test> loadAll(Collection<Integer> keys) {
Logger.info("load all called");
当我从池中使用数据库连接时,这似乎对我造成了问题(没有任何延迟)。现在我需要显着增加连接池大小或者在我的存储加载中引入时间延迟,因为我的连接池无法处理连接请求的数量(一旦我完成一个操作,我就会将连接释放回池中在商店负载)。
答案 0 :(得分:1)
这似乎是v3 +中的默认行为 - 在v2 +中,似乎加载all只会被调用一次。我还没有看到任何其他证据。除非我错了,否则必须确保这不会导致任何问题