diff --git a/src/main/java/the/flash/NettyClient.java b/src/main/java/the/flash/NettyClient.java index c398662..fa64dda 100644 --- a/src/main/java/the/flash/NettyClient.java +++ b/src/main/java/the/flash/NettyClient.java @@ -44,6 +44,7 @@ public void initChannel(SocketChannel ch) { connect(bootstrap, "juejin.im", 80, MAX_RETRY); } + // 使用退避策略来自动重连 private static void connect(Bootstrap bootstrap, String host, int port, int retry) { bootstrap.connect(host, port).addListener(future -> { if (future.isSuccess()) { @@ -56,6 +57,7 @@ private static void connect(Bootstrap bootstrap, String host, int port, int retr // 本次重连的间隔 int delay = 1 << order; System.err.println(new Date() + ": 连接失败,第" + order + "次重连……"); + // bootstrap.config().group() 返回的就是我们在一开始的时候配置的线程模型 workerGroup,调 workerGroup 的 schedule 方法即可实现定时任务逻辑 bootstrap.config().group().schedule(() -> connect(bootstrap, host, port, retry - 1), delay, TimeUnit .SECONDS); }