通过工厂模式创建链接
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();
}