2013-11-02 150 views
3

我计划修改Netty UptimeClient(请参阅here)。原始版本设计为无限运行:它在断开连接的情况下重新连接到主机。我想在UptimeClient.java中添加一个'terminate'方法。该方法将断开或停止与外部线程的重新连接进程,优雅地关闭Netty并返回。Netty:停止重新连接和关闭

由于客户端通道可能会因为重新连接过程而发生变化,因此在ChannelGroup中保留'bootstrap.connect()'返回的所有通道并在发布Netty资源之前使用该组来调用'close'是安全的吗?

你将如何实施'终止'方法? (编辑:使用3.7.0)

回答

5

在Nety 4.0中,您可以拨shutdownGracefully(...)上的EventLoopGroup来管理您的所有频道。然后所有现有频道将自动关闭,重新连接尝试应被拒绝。如果这不起作用,请随时提出问题。

如果你使用的是Netty 3.x,不幸的是,这里没有自动机制。您必须确保关闭所有通道,因为事件循环不会自行终止,直到它具有要管理的通道。有关更多信息,请参阅NioClientChannelFactory('线程的生命周期和正常关机')

+0

是否存在使用版本3.7.0的等效机制? EventLoopGroup仅在Netty 4. +中存在。 –

+0

更新了答案。 – trustin