2017-10-18 97 views
0

在hazelcast集群中有两个节点。我试图从可能存储在第二个节点上的地图获得缓存。在网络故障的情况下,它将进入等待循环,同时从地图获取缓存。 有没有什么办法可以在从地图获取缓存而不是等待的同时检测到即时的网络故障。 我已经尝试tryLock在调用get之前,它返回立即真或假,但不知道它会在所有情况下工作。Hazelcast:如何在从地图获取缓存时检测网络故障

回答

0

IMap.tryLock所做的是调用LockOperation与0超时,以便如果有网络分区,它将立即返回。 您可以使用IMap.getAsync(key)实现类似的场景,其返回ICompletableFuture对象。 然后使用ICompletableFuture.get(timeout, timeUnit)设置从地图获取条目的超时时间。

通过心跳检测网络分区。当成员在特定的超时时间内没有发送心跳信号时,它被认为是死的。因此,检测网络分区没有直接的方法,但您可以通过hazelcast.heartbeat.interval.secondshazelcast.max.no.heartbeat.seconds属性来配置行为。 (见Hazelcast Docs中的System Properties