跳转到内容

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)顺序释放,后注册的资源先关闭。即使某个资源释放失败,其余资源仍会继续释放。

poolManager.list(); // ["postgres", "redis"]
const app = createApp({
async onShutdown() {
const results = await poolManager.releaseAll();
const errors = results.filter(r => r.error);
if (errors.length) {
console.error("部分资源释放失败:", errors);
}
},
});
属性/方法类型说明
namestring资源名称
close()() => Promise<void>关闭/释放资源
方法说明
register(resource)注册可释放资源
releaseAll()逆序释放所有资源,返回结果列表
list()获取已注册资源名称列表