不推荐使用Netty自带连接池ChannelPool

首先,网上关于Netty自带连接池ChannelPool的文章很少,推测一下原因可能是因为大家使用Netty时多数都是做为服务端来应用,因此基本上用不到连接池。但是如果你使用Netty封装一个HTTP客户端那就必须考虑Channel池了。

不推荐使用内置ChannelPool的原因如下:

  • 没有健康检查机制
    如果server端关闭了连接,那么池中的某个channel会无效,由于缺乏健康检测,这个无效的channel还是会被调用方获取到。
  • 无法剔除(evict)指定Channel
    这个池居然只能添加Channel而不能删除!也就是说如果你明确知道了哪个Channel已经被关闭了,你也没有办法把这个Channel从池中剔除掉,简直了
  • 无法动态控制连接数
    我们在使用数据库连接池的时候都会配置类似于maxActive, maxIdle之类的参数,意思是池中最大允许有多少连接、最大空闲连接等。我们希望能在空闲的时候主动释放掉一些连接来节省资源,繁忙的时候可多创建一些连接。这应该是非常基本的功能了吧,不好意思,不支持!

所以,这个池如果你只是用来写写玩具代码然后发个博客还是没问题的,生产环境就算了,还是使用apache的对象池或者自己实现一个吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容