通过工厂模式创建链接
static { BasePooledObjectFactory < MilvusServiceClient > factory = new BasePooledObjectFactory < MilvusServiceClient > ( ) { @Override public MilvusServiceClient create ( ) throws Exception { return new MilvusServiceClient ( ConnectParam . newBuilder ( ) . withHost ( Consist . MILVUS_HOST ) . withPort ( Consist . MILVUS_PORT ) . withAuthorization ( Consist . MILVUS_USERNAME , Consist . MILVUS_PASSWORD ) . build ( ) ) ; } @Override public PooledObject < MilvusServiceClient > wrap ( MilvusServiceClient obj) { return new DefaultPooledObject < > ( obj) ; } } ;
配置连接池
GenericObjectPoolConfig < MilvusServiceClient > config = new GenericObjectPoolConfig < > ( ) ; config. setMaxTotal ( Consist . MAX_TOTAL ) ; config. setMaxIdle ( Consist . MAX_IDLE ) ; config. setMinIdle ( Consist . MIN_IDLE ) ; config. setMaxWaitMillis ( Consist . MAX_WAIT_MILLIS ) ; pool = new GenericObjectPool < > ( factory, config) ;
从连接池中获取连接,并设置超时设置
public static MilvusServiceClient borrowClient ( long timeout) throws Exception { return pool. borrowObject ( timeout) ; }
归还连接
public static void returnClient ( MilvusServiceClient client) { pool. returnObject ( client) ; }
关闭链接池
public static void close ( ) { pool. close ( ) ; }