我们的生产应用场景中有一种情况,就是重启所有的Ignite Server时,那些原本连上的Ignite client也会断掉,但是就算之后Ignite Server重启后他们也不会重连,必须要重启才行。
这种情况就很麻烦,为了解决这种问题,经过一番摸索,发现只需要修改一个参数就可以实现这个逻辑。
就是客户端的TcpDiscoverySpi的NetworkTimeout
TcpDiscoverySpi spi = new TcpDiscoverySpi();
spi.setNetworkTimeout(Long.parseLong(System.getProperty("client_discovery_network_timeout")));
IgniteConfiguration.setDiscoverySpi(spi);
这样就可以了,因为我们的服务每周例行重启,所以我就将这个值设置成一星期,那么这一个星期内无论怎么重启Ignite server,client端都可以重连而不需要重启。