diff --git a/core/src/main/java/cn/qaiu/vx/core/Deploy.java b/core/src/main/java/cn/qaiu/vx/core/Deploy.java index 1a1ffaf..1645751 100644 --- a/core/src/main/java/cn/qaiu/vx/core/Deploy.java +++ b/core/src/main/java/cn/qaiu/vx/core/Deploy.java @@ -147,19 +147,6 @@ public final class Deploy { } catch (Exception e) { LOGGER.warn("Vert.x close error or timeout", e); } - // 显式关闭 JDBC 连接池(vertx.close 不保证关闭 JDBCPoolInit 管理的 pool) - try { - var poolInit = cn.qaiu.db.pool.JDBCPoolInit.instance(); - if (poolInit != null) poolInit.close(); - } catch (Exception e) { - LOGGER.warn("JDBC pool close error", e); - } - // 显式关闭 JS 解析器 WorkerExecutor 线程池 - try { - cn.qaiu.parser.customjs.JsParserExecutor.shutdownExecutor(); - } catch (Exception e) { - LOGGER.warn("JsParserExecutor shutdown error", e); - } })); //配置保存在共享数据中 var sharedData = vertx.sharedData(); diff --git a/core/src/main/java/cn/qaiu/vx/core/verticle/PostExecVerticle.java b/core/src/main/java/cn/qaiu/vx/core/verticle/PostExecVerticle.java index a023fa7..717bc19 100644 --- a/core/src/main/java/cn/qaiu/vx/core/verticle/PostExecVerticle.java +++ b/core/src/main/java/cn/qaiu/vx/core/verticle/PostExecVerticle.java @@ -62,16 +62,6 @@ public class PostExecVerticle extends AbstractVerticle { LOGGER.info("未找到 AppRun 接口的实现类"); } - // 注册定时清理过期缓存任务(每小时执行一次) - vertx.setPeriodic(3600_000, 3600_000, id -> { - try { - cn.qaiu.lz.common.cache.CacheManager cacheManager = new cn.qaiu.lz.common.cache.CacheManager(); - cacheManager.cleanupExpiredCache(); - } catch (Exception e) { - LOGGER.warn("定时清理缓存任务跳过(数据库可能未就绪)", e); - } - }); - LOGGER.info("PostExecVerticle 执行完成"); startPromise.complete(); } diff --git a/web-service/src/main/java/cn/qaiu/lz/common/cache/CacheManager.java b/web-service/src/main/java/cn/qaiu/lz/common/cache/CacheManager.java index d460b06..77f86f1 100644 --- a/web-service/src/main/java/cn/qaiu/lz/common/cache/CacheManager.java +++ b/web-service/src/main/java/cn/qaiu/lz/common/cache/CacheManager.java @@ -225,6 +225,26 @@ public class CacheManager { return promise.future(); } + /** + * 注册定时清理过期缓存任务(每小时执行一次) + * 应在应用启动后调用 + */ + public static void registerPeriodicCleanup() { + try { + io.vertx.core.Vertx vertx = cn.qaiu.vx.core.util.VertxHolder.getVertxInstance(); + vertx.setPeriodic(3600_000, 3600_000, id -> { + try { + new CacheManager().cleanupExpiredCache(); + } catch (Exception e) { + LOGGER.warn("定时清理缓存任务跳过(数据库可能未就绪)", e); + } + }); + LOGGER.info("缓存定时清理任务已注册(每小时执行)"); + } catch (Exception e) { + LOGGER.warn("注册缓存定时清理任务失败", e); + } + } + public Future> getShareKeyTotal(String shareKey) { String sql = """ SELECT `share_key`, SUM(cache_hit_total) AS hit_total, SUM(api_parser_total) AS parser_total diff --git a/web-service/src/main/java/cn/qaiu/lz/web/service/impl/CacheServiceImpl.java b/web-service/src/main/java/cn/qaiu/lz/web/service/impl/CacheServiceImpl.java index a908e18..977432c 100644 --- a/web-service/src/main/java/cn/qaiu/lz/web/service/impl/CacheServiceImpl.java +++ b/web-service/src/main/java/cn/qaiu/lz/web/service/impl/CacheServiceImpl.java @@ -29,6 +29,11 @@ public class CacheServiceImpl implements CacheService { private final CacheManager cacheManager = new CacheManager(); + static { + // 服务类加载时注册缓存定时清理任务 + CacheManager.registerPeriodicCleanup(); + } + private Future getAndSaveCachedShareLink(ParserCreate parserCreate) { // 认证、域名相关(检查是否已经添加过参数,避免重复调用)