@nexe/config-manager
Version:
Nexe Config Manager - A flexible configuration management solution with multiple sources and hot reload support
145 lines • 5.12 kB
JavaScript
;
// 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