背景:使用common-pool2框架手写连接池(例如es连接池),提升创建es连接的性能
以es连接池为例,代码见 上传资源->util工具类->es连接池 文件夹
一、maven引入common-pool2依赖
1 | <dependency> |
二、创建一个池类,这个池通过依赖的方式引入commons-pool2中的GenericObjectPool。在这个类中,我们定义了如何从池中借对象和返回对象
1 | public T getResource(){ |
三、创建ES的连接池,继承池类
1 | private String clusterName; |
四、定义了一个ES的连接池配置类用于配置连接池的属性,在apache提供的commons-pool2中已经提供了一个池基本属性配置的类GenericObjectPoolConfig,我们可以直接继承此类
1 | /** |
五、ES连接属性配置类
1 | //ip |
六、最后,我们还需要做的是给这个池提供一个工厂类,用于创建池中的对象和回收对象,我们只要实现PooledObjectFactory接口并实现接口中的makeObject()和destroyObject()方法即可
ElasticSearchClientFactory.java
1 | private HostAndPort hostAndPort; |
七、验证
1 | public class ElasticSearchPoolTest { |