通過工廠模式創建鏈接
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 ( ) ; }