Pool Manager
createPoolManager 提供了统一的资源注册与释放机制,确保应用退出时所有连接池(数据库、Redis 等)被正确关闭。
import { createPoolManager } from "@ventostack/core";
const poolManager = createPoolManager();
// 注册资源(需实现 Disposable 接口)poolManager.register({ name: "postgres", async close() { await pgPool.end(); },});
poolManager.register({ name: "redis", async close() { await redisClient.quit(); },});
// 应用退出时统一释放const results = await poolManager.releaseAll();console.log(results);// [{ name: "redis" }, { name: "postgres" }]资源按后进先出(LIFO)顺序释放,后注册的资源先关闭。即使某个资源释放失败,其余资源仍会继续释放。
查看已注册资源
Section titled “查看已注册资源”poolManager.list(); // ["postgres", "redis"]与生命周期集成
Section titled “与生命周期集成”const app = createApp({ async onShutdown() { const results = await poolManager.releaseAll(); const errors = results.filter(r => r.error); if (errors.length) { console.error("部分资源释放失败:", errors); } },});Disposable 接口
Section titled “Disposable 接口”| 属性/方法 | 类型 | 说明 |
|---|---|---|
name | string | 资源名称 |
close() | () => Promise<void> | 关闭/释放资源 |
PoolManager 接口
Section titled “PoolManager 接口”| 方法 | 说明 |
|---|---|
register(resource) | 注册可释放资源 |
releaseAll() | 逆序释放所有资源,返回结果列表 |
list() | 获取已注册资源名称列表 |