远程配置参数
远程配置参数是指由 配置服务 统一管理的各种运行参数:
- 全局配置参数
- 数据库连接参数
- 远程独立配置文件
- 远程配置文件(xxx.App.config, xxx.Log.config)
获取全局配置参数
string xxkey = Settings.GetSetting("xx-key");
注意:
- Settings 读取来源&优先级:环境变量 > 配置服务 > AppConfig
- 不启用配置服务时,Settings 等同于 LocalSettings
- LocalSettings 读取来源&优先级:环境变量 > AppConfig
- 环境变量:它仅用于产生环境中以最高级别形式做特殊调整参数(覆盖性使用)
全局配置参数分类:
- 公共参数:供多个应用使用(至少2个)
- URL地址:内部服务,外部服务
- 敏感信息数据
- 连接类参数:RabbbitMQ/Redis/es/oss/...
- 帐号类参数:邮箱帐号,IM应用帐号
- 密码密钥类:登录密码,JWT密钥
定义要求
- 建议参数值长度不超过 300 字符
命名要求
- 要能体现出是使用的什么用途
- 参数名称包含应用的名称(防止冲突)
- 例如:Uranus_NotifyService_Rabbit
获取数据库连接参数
DbConfig config = DbConnManager.GetAppDbConfig("xx_Db");
以上代码虽然可以获取数据库连接参数,但它还不能执行数据库操作,
通常情况下可使用下面的代码来获取数据库连接(在Controller代码中):
using( DbContext dbContext = this.CreateAppDbConnection("xx_Db") ) {
return await dbContext.CPQuery.Create("select now()").ExecuteScalarAsync<string>();
}
注意:
- DbConnManager 既能读取 配置服务中的数据库连接,也能读取 AppConfig中定义的连接
- 启用配置服务时,DbConnManager 从配置服务中获取连接参数
- 当不启用配置服务时,DbConnManager 从 AppConfig 中读取
获取独立配置文件
string json = ConfigFile.GetFile("xxxapp.filename.jon");
var config = json.FromJson<T>();
或者
string xml = ConfigFile.GetFile("xxxapp.filename.xml");
var config = xml.FromXml<T>();
注意:
- ConfigFile 既能读取 远程独立配置文件,也能读取 本地独立配置文件
- ConfigFile 的读取优先级: 远程配置文件 > 本地独立配置文件
- 当不启用配置服务时,ConfigFile 直接从本地目录中查找文件
独立配置文件适用场景:
- 包含敏感信息,内容较大,例如:RSA密钥
- 多个配置项之间关联紧密,例如:某个第三方组件的多个配置参数
- 应用程序的配置参数结构复杂(嵌套结构),通常是一个XML/JSON/YAML文件
远程配置文件
ClownFish.App.config, ClownFish.Log.config 原本是各个应用项目中的本地配置文件,
为了方便线上及时调整它们的文件内容,
可以在配置服务的【配置文件】中新建一个名为 appname.App.Config,
将内容复制上去,以后就可以在线调整参数了。
appname 就是调用 AppStartup.RunAsXxxx(...) 的第一个参数
类似的方法,可将 ClownFish.Log.config 放给配置服务来管理,对应的名称:appname.Log.Config
说明:
- 这2个特殊的配置文件由框架负责读取,不需要在代码中操作。
- 远程的App.config中,并不是任何参数都可以在线调整,
- 部分框架定义的参数在初始化期间就已读取,只能通过环境变量来修改。