我有一个使用 Netty
的项目,并且存在一些问题:
如果连接
空闲一段时间,连接
是否会自行关闭?如果自动关闭,如何设置关闭时间?
有 5 个线程,它们发送 100 个数据。他们使用相同的 channel ,例如
/** release connect*/
public void closeConnect(ChannelFuture writeFuture){
if(writeFuture != null){
writeFuture.awaitUninterruptibly();
}
future.getChannel().close();
future.getChannel().getCloseFuture().awaitUninterruptibly();
client.releaseExternalResources();
}
//write data
ChannelFuture future = Channels.write(data);
closeConnect(future);
上述代码将导致 closeChannelException
。我的问题是:如何避免异常?
另外,当我在客户端使用ReadTimeoutHandler
,并设置timeout
= 5s,并且让线程 hibernate 6s时,就会发生ReadTimeoutException
。当我调用e.getChannel().close()
时,它还会创建一个closeChannelException
。我如何自己处理异常或无异常地关闭连接?
如果 API 抛出 ReadTimeoutException
,您可以捕获该异常,然后调用 closeConnect(...)
。
但在我看来,该 channel 已经关闭;因此,要么忽略 CloseChannelException
,要么在它影响程序状态时对其进行处理。
我是一名优秀的程序员,十分优秀!