From c35ff86f13b476dc523ec83dc925db6cf052c2fe Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Mon, 26 May 2025 20:59:49 +0800 Subject: [PATCH] 'commit' --- .../com/dsideal/Res/Plugin/MilvusPlugin.java | 75 +++++++++++++------ .../com/dsideal/Res/Plugin/Neo4jPlugin.java | 49 +++++++++--- .../java/com/dsideal/Res/ResApplication.java | 49 ++++-------- 3 files changed, 104 insertions(+), 69 deletions(-) diff --git a/dsRes/src/main/java/com/dsideal/Res/Plugin/MilvusPlugin.java b/dsRes/src/main/java/com/dsideal/Res/Plugin/MilvusPlugin.java index 26645610..569e2101 100644 --- a/dsRes/src/main/java/com/dsideal/Res/Plugin/MilvusPlugin.java +++ b/dsRes/src/main/java/com/dsideal/Res/Plugin/MilvusPlugin.java @@ -1,5 +1,6 @@ package com.dsideal.Res.Plugin; +import com.jfinal.plugin.IPlugin; import io.milvus.pool.MilvusClientV2Pool; // Milvus V2版本连接池类 import io.milvus.pool.PoolConfig; // 连接池配置类 import io.milvus.v2.client.ConnectConfig; // 连接配置类 @@ -10,10 +11,13 @@ import org.slf4j.LoggerFactory; // 日志工厂 import java.time.Duration; // 时间间隔类 @Getter // 自动为所有字段生成getter方法 -public class MilvusPlugin { +public class MilvusPlugin implements IPlugin { private static MilvusPlugin instance; // 单例实例 private static final Logger logger = LoggerFactory.getLogger(MilvusPlugin.class); // 日志记录器 private MilvusClientV2Pool pool; // Milvus连接池实例 + private String host; // Milvus服务地址 + private int port; // Milvus服务端口 + private int maxConnections; // 最大连接数 // 私有构造方法,确保单例模式 private MilvusPlugin() { @@ -27,9 +31,43 @@ public class MilvusPlugin { return instance; } - // 初始化连接池 - public void init(String host, int port, int maxConnections) { + // 设置Milvus连接配置 + public void setConfig(String host, int port, int maxConnections) { + this.host = host; + this.port = port; + this.maxConnections = maxConnections; + } + + // 从连接池获取客户端连接 + public MilvusClientV2 getClient() { try { + if (pool != null) { + return pool.getClient("client_name"); // 使用固定key获取连接 + } else { + logger.error("Milvus连接池未初始化"); + throw new RuntimeException("Milvus连接池未初始化"); + } + } catch (Exception e) { + logger.error("获取Milvus连接失败: " + e.getMessage(), e); + throw new RuntimeException("获取Milvus连接失败", e); + } + } + + // 归还客户端连接到连接池 + public void returnClient(MilvusClientV2 client) { + if (client != null && pool != null) { + pool.returnClient("client_name", client); // 使用固定key归还连接 + } + } + + @Override + public boolean start() { + try { + if (host == null || port <= 0 || maxConnections <= 0) { + logger.error("Milvus连接配置不完整"); + throw new RuntimeException("Milvus连接配置不完整"); + } + // 构建连接配置 ConnectConfig connectConfig = ConnectConfig.builder() .uri("http://" + host + ":" + port) // 设置Milvus服务地址 @@ -47,33 +85,24 @@ public class MilvusPlugin { // 创建连接池实例 pool = new MilvusClientV2Pool(poolConfig, connectConfig); logger.info("Milvus连接池初始化成功,最大连接数:{}", maxConnections); + return true; } catch (Exception e) { logger.error("Milvus初始化失败: " + e.getMessage(), e); throw new RuntimeException("Milvus初始化失败", e); } } - // 从连接池获取客户端连接 - public MilvusClientV2 getClient() { + @Override + public boolean stop() { try { - return pool.getClient("client_name"); // 使用固定key获取连接 + if (pool != null) { + pool.close(); // 释放所有连接资源 + logger.info("Milvus连接池已关闭"); + } + return true; } catch (Exception e) { - logger.error("获取Milvus连接失败: " + e.getMessage(), e); - throw new RuntimeException("获取Milvus连接失败", e); - } - } - - // 归还客户端连接到连接池 - public void returnClient(MilvusClientV2 client) { - if (client != null) { - pool.returnClient("client_name",client); // 使用固定key归还连接 - } - } - - // 关闭连接池 - public void close() { - if (pool != null) { - pool.close(); // 释放所有连接资源 + logger.error("关闭Milvus连接池失败: " + e.getMessage(), e); + throw new RuntimeException("关闭Milvus连接池失败", e); } } -} +} \ No newline at end of file diff --git a/dsRes/src/main/java/com/dsideal/Res/Plugin/Neo4jPlugin.java b/dsRes/src/main/java/com/dsideal/Res/Plugin/Neo4jPlugin.java index 339c7252..291f70cb 100644 --- a/dsRes/src/main/java/com/dsideal/Res/Plugin/Neo4jPlugin.java +++ b/dsRes/src/main/java/com/dsideal/Res/Plugin/Neo4jPlugin.java @@ -1,5 +1,6 @@ package com.dsideal.Res.Plugin; +import com.jfinal.plugin.IPlugin; import lombok.Getter; import org.neo4j.driver.*; import org.neo4j.driver.Config; @@ -9,10 +10,13 @@ import org.slf4j.LoggerFactory; import java.util.concurrent.TimeUnit; @Getter -public class Neo4jPlugin { +public class Neo4jPlugin implements IPlugin { private static Neo4jPlugin instance; private Driver driver; private static final Logger logger = LoggerFactory.getLogger(Neo4jPlugin.class); + private String uri; + private String user; + private String password; private Neo4jPlugin() {} @@ -23,17 +27,29 @@ public class Neo4jPlugin { return instance; } - public void init(String uri, String user, String password) { + public void setConfig(String uri, String user, String password) { + this.uri = uri; + this.user = user; + this.password = password; + } + + @Override + public boolean start() { try { + if (uri == null || user == null || password == null) { + logger.error("Neo4j连接配置不完整"); + throw new RuntimeException("Neo4j连接配置不完整"); + } + // 配置连接池 Config config = Config.builder() - .withMaxConnectionLifetime(30, TimeUnit.MINUTES) // 连接最大生命周期 - .withMaxConnectionPoolSize(50) // 连接池最大连接数 - .withConnectionAcquisitionTimeout(5, TimeUnit.SECONDS) // 获取连接超时时间 - .withConnectionTimeout(5, TimeUnit.SECONDS) // 连接超时时间 - .withMaxTransactionRetryTime(15, TimeUnit.SECONDS) // 事务重试最大时间 - .withFetchSize(1000) // 每次查询的默认获取数量 - .build(); + .withMaxConnectionLifetime(30, TimeUnit.MINUTES) // 连接最大生命周期 + .withMaxConnectionPoolSize(50) // 连接池最大连接数 + .withConnectionAcquisitionTimeout(5, TimeUnit.SECONDS) // 获取连接超时时间 + .withConnectionTimeout(5, TimeUnit.SECONDS) // 连接超时时间 + .withMaxTransactionRetryTime(15, TimeUnit.SECONDS) // 事务重试最大时间 + .withFetchSize(1000) // 每次查询的默认获取数量 + .build(); // 创建带连接池配置的驱动实例 driver = GraphDatabase.driver(uri, AuthTokens.basic(user, password), config); @@ -43,15 +59,24 @@ public class Neo4jPlugin { session.run("RETURN 1").consume(); logger.info("Neo4j连接池初始化成功"); } + return true; } catch (Exception e) { logger.error("Neo4j初始化失败: " + e.getMessage(), e); throw new RuntimeException("Neo4j初始化失败", e); } } - public void close() { - if (driver != null) { - driver.close(); + @Override + public boolean stop() { + try { + if (driver != null) { + driver.close(); + logger.info("Neo4j连接池已关闭"); + } + return true; + } catch (Exception e) { + logger.error("关闭Neo4j连接池失败: " + e.getMessage(), e); + throw new RuntimeException("关闭Neo4j连接池失败", e); } } } \ No newline at end of file diff --git a/dsRes/src/main/java/com/dsideal/Res/ResApplication.java b/dsRes/src/main/java/com/dsideal/Res/ResApplication.java index 9f46ca43..1768cf93 100644 --- a/dsRes/src/main/java/com/dsideal/Res/ResApplication.java +++ b/dsRes/src/main/java/com/dsideal/Res/ResApplication.java @@ -25,9 +25,6 @@ import org.slf4j.LoggerFactory; import java.io.File; public class ResApplication extends JFinalConfig { - private final Neo4jPlugin neo4jPlugin = Neo4jPlugin.getInstance(); - private final MilvusPlugin milvusPlugin = MilvusPlugin.getInstance(); - private static final Logger logger = LoggerFactory.getLogger(ResApplication.class); public static void main(String[] args) { @@ -98,30 +95,22 @@ public class ResApplication extends JFinalConfig { me.add(redis); // 配置 Neo4j - try { - String url = PropKit.get("neo4j.url"); - String username = PropKit.get("neo4j.username"); - String password = PropKit.get("neo4j.password"); - - logger.info("正在初始化Neo4j连接: url={}", url); - neo4jPlugin.init(url, username, password); - } catch (Exception e) { - logger.error("Neo4j配置失败", e); - throw new RuntimeException("Neo4j配置失败", e); - } - + String url = PropKit.get("neo4j.url"); + String username = PropKit.get("neo4j.username"); + String password = PropKit.get("neo4j.password"); + logger.info("正在初始化Neo4j连接: url={}, username={},password={}", url, username, password); + Neo4jPlugin neo4jPlugin = Neo4jPlugin.getInstance(); + neo4jPlugin.setConfig(url, username, password); // 设置Neo4j连接配置 + me.add(neo4jPlugin); // 添加Neo4j插件 + // 配置 Milvus - try { - String host = PropKit.get("milvus.ms_host"); - int port = PropKit.getInt("milvus.ms_port"); - int maxConnections = PropKit.getInt("milvus.ms_max_connections"); - - logger.info("正在初始化Milvus连接: host={}, port={}", host, port); - milvusPlugin.init(host, port, maxConnections); - } catch (Exception e) { - logger.error("Milvus配置失败", e); - throw new RuntimeException("Milvus配置失败", e); - } + String host = PropKit.get("milvus.ms_host"); + int port = PropKit.getInt("milvus.ms_port"); + int maxConnections = PropKit.getInt("milvus.ms_max_connections"); + logger.info("正在初始化Milvus连接: host={}, port={}", host, port); + MilvusPlugin milvusPlugin = MilvusPlugin.getInstance(); + milvusPlugin.setConfig(host, port, maxConnections); // 设置Milvus连接配置 + me.add(milvusPlugin); // 添加Milvus插件 } /** @@ -164,12 +153,4 @@ public class ResApplication extends JFinalConfig { //打印 启动Logo System.out.println(FileUtil.readUtf8String("logo.txt")); } - - @Override - public void onStop() { - // JFinal 停止时关闭 Neo4j 连接 - neo4jPlugin.close(); - // JFinal 停止时关闭 Milvus 连接 - milvusPlugin.close(); - } }