0
jedis SRC代码MasterListener运行的方法:jedis MasterListener initPool多次
j.subscribe(new JedisPubSub() {
@Override
public void onMessage(String channel, String message) {
log.fine("Sentinel " + host + ":" + port + " published: " + message + ".");
String[] switchMasterMsg = message.split(" ");
if (switchMasterMsg.length > 3) {
if (masterName.equals(switchMasterMsg[0])) {
initPool(toHostAndPort(Arrays.asList(switchMasterMsg[3], switchMasterMsg[4])));
} else {
log.fine("Ignoring message on +switch-master for master name "
+ switchMasterMsg[0] + ", our master name is " + masterName);
}
} else {
log.severe("Invalid message received on Sentinel " + host + ":" + port
+ " on channel +switch-master: " + message);
}
}
}, "+switch-master");
如果有三个哨兵,所以创建了三个MasterListener.When故障发生,jedis客户端将initPool三次,每次MasterListener。
问题是:为什么不只是initPool一次?当哨兵客观地脱机主控,那么jedis客户端收到消息重新initPool?