UNPKG

@nexe/config-manager

Version:

Nexe Config Manager - A flexible configuration management solution with multiple sources and hot reload support

145 lines 5.12 kB
"use strict"; // import { createLogger } from '@nexe/logger'; // import { ConsulConfigSource } from '../sources/consul-config-source'; // const logger = createLogger('ConsulConfigExample'); // /** // * Consul配置源V2使用示例 // */ // async function consulConfigExample() { // // 创建Consul配置源实例 // const consulConfig = new ConsulConfigSource({ // host: '127.0.0.1', // port: 8500, // secure: false, // defaultKeyPrefix: 'app/config', // token: process.env.CONSUL_TOKEN, // 可选的访问令牌 // dc: 'dc1', // 可选的数据中心 // }); // try { // // 1. 加载所有配置 // logger.info('加载所有配置...'); // const allConfig = await consulConfig.load(); // logger.info('所有配置:', allConfig); // // 2. 加载特定配置项 // logger.info('加载数据库配置...'); // const dbConfig = await consulConfig.load('database'); // logger.info('数据库配置:', dbConfig); // // 3. 订阅配置变更 // logger.info('订阅数据库配置变更...'); // consulConfig.subscribe('database', (newValue: unknown) => { // logger.info('数据库配置已更新:', newValue); // // 在这里处理配置变更,例如重新连接数据库 // handleDatabaseConfigChange(newValue); // }); // // 4. 订阅多个配置项 // consulConfig.subscribe('cache', (newValue: unknown) => { // logger.info('缓存配置已更新:', newValue); // handleCacheConfigChange(newValue); // }); // consulConfig.subscribe('logging', (newValue: unknown) => { // logger.info('日志配置已更新:', newValue); // handleLoggingConfigChange(newValue); // }); // // 5. 支持嵌套键访问 // const redisPort = await consulConfig.load('cache/redis/port'); // logger.info('Redis端口:', redisPort); // logger.info('Consul配置源已初始化并开始监听配置变更'); // logger.info('配置源名称:', consulConfig.getName()); // logger.info('支持热更新:', consulConfig.supportsHotReload()); // // 模拟应用运行,保持监听状态 // await new Promise<void>(resolve => { // setTimeout(() => { // logger.info('示例运行完成,清理资源...'); // resolve(); // }, 30000); // 运行30秒 // }); // } catch (error) { // logger.error('Consul配置源使用失败:', error); // } finally { // // 6. 清理资源 // consulConfig.dispose(); // logger.info('已清理Consul配置源资源'); // } // } // /** // * 处理数据库配置变更 // */ // function handleDatabaseConfigChange(_newConfig: unknown): void { // logger.info('正在处理数据库配置变更...'); // // 实际应用中,这里可能需要: // // 1. 验证新配置的有效性 // // 2. 关闭旧的数据库连接 // // 3. 使用新配置创建数据库连接 // // 4. 更新应用中的数据库实例 // } // /** // * 处理缓存配置变更 // */ // function handleCacheConfigChange(_newConfig: unknown): void { // logger.info('正在处理缓存配置变更...'); // // 实际应用中,这里可能需要: // // 1. 更新缓存连接参数 // // 2. 重新连接缓存服务 // // 3. 清空或迁移现有缓存数据 // } // /** // * 处理日志配置变更 // */ // function handleLoggingConfigChange(_newConfig: unknown): void { // logger.info('正在处理日志配置变更...'); // // 实际应用中,这里可能需要: // // 1. 更新日志级别 // // 2. 更改日志输出格式 // // 3. 重新配置日志文件路径 // } // /** // * 在Consul中设置示例配置的辅助函数 // * 注意:这需要Consul客户端写权限 // */ // async function setupExampleConfig() { // const _consulConfig = new ConsulConfigSource({ // host: '127.0.0.1', // port: 8500, // defaultKeyPrefix: 'app/config', // }); // // 注意:这个示例假设有写权限,实际使用时需要相应的权限配置 // logger.info('设置示例配置到Consul...'); // const exampleConfig = { // database: { // host: 'localhost', // port: 5432, // name: 'myapp', // username: 'admin', // password: 'secret', // pool: { // min: 2, // max: 10, // }, // }, // cache: { // redis: { // host: 'localhost', // port: 6379, // db: 0, // }, // ttl: 3600, // }, // logging: { // level: 'info', // format: 'json', // file: '/var/log/app.log', // }, // }; // // 实际使用时,你需要使用Consul的KV存储API来设置这些值 // logger.info('示例配置结构:', exampleConfig); // logger.info('请手动在Consul KV存储中设置这些配置项'); // } // // 如果直接运行此文件,执行示例 // if (require.main === module) { // consulConfigExample().catch(error => { // logger.error('示例执行失败:', error); // process.exit(1); // }); // } // export { consulConfigExample, setupExampleConfig }; //# sourceMappingURL=consul-config-example.v2.js.map