基于deepseek的智能语音客服【第四讲】封装milvus数据库连接池封装

发布于:2025-03-23 ⋅ 阅读:(34) ⋅ 点赞:(0)

通过工厂模式创建链接

 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();
	    }