hazelcast群集中有两个节点。我试图从地图获取缓存,可能存储在第二个节点上。如果网络出现故障,它将从地图获取缓存时进入等待循环。 有没有办法在从地图获取缓存而不是等待时检测到即时网络故障。 我在调用get之前尝试过tryLock,返回立即为true或false但不确定它是否适用于所有情况。
答案 0 :(得分:0)
IMap.tryLock
做的是使用 0 timeout 调用LockOperation,这样如果有网络分区,它将立即返回。
您可以使用返回IMap.getAsync(key)
对象的ICompletableFuture
来实现类似的方案。
然后使用ICompletableFuture.get(timeout, timeUnit)
设置从地图获取条目的超时。
通过心跳检测网络分区。当某个成员在某个超时时间内没有发送心跳时,它被认为已经死亡。因此,没有直接的方法来检测网络分区,但您可以通过hazelcast.heartbeat.interval.seconds
和hazelcast.max.no.heartbeat.seconds
属性配置行为。 (请参阅Hazelcast文档中的System Properties)