我计划修改Netty UptimeClient(参见here)。原始版本设计为无休止地运行:它在断开连接时重新连接到主机。我想在UptimeClient.java中添加一个'terminate'方法。该方法将断开或停止重新连接进程与外部线程,正常关闭Netty并返回。
由于重新连接过程会导致客户端通道发生变化,因此将“bootstrap.connect()”返回的所有通道保留在ChannelGroup中是否安全,并在释放Netty的资源之前使用该组调用“close”? / p>
您如何实施'terminate'方法? (编辑:使用3.7.0)
答案 0 :(得分:5)
在Nety 4.0中,您只需拨打管理所有频道的shutdownGracefully(...)
上的EventLoopGroup
即可。然后,所有现有频道将自动关闭,并且应拒绝重新连接尝试。如果这不起作用,请随时提出问题。
如果您正在使用Netty 3.x,遗憾的是,没有自动机制。您必须确保关闭所有通道,因为事件循环在有一个要管理的通道之前不会自行终止。有关更多信息,请参阅NioClientChannelFactory
('线程生命周期和正常关闭')