Consul-配置中心
Consul除了服务注册发现,还可以做配置中心。配置中心就是把各个业务服务器的配置文件统一放到配置中心中,这样就可以实现修改配置中心的内容,业务服务器自动同步
快速开始
1、启动Consul
consul.exe agent -dev
2、添加配置appsettings.json
3、创建测试项目Consul.Service1
4、添加Nuget包
<PackageReference Include="Winton.Extensions.Configuration.Consul" Version="3.2.0" />
5、添加Consul配置源
//配置相关
builder.Host.ConfigureAppConfiguration(config => {
config.AddConsul("appsettings.json", options =>
{
options.ConsulConfigurationOptions = cco => { cco.Address = new Uri("http://127.0.0.1:8500"); }; //consul地址
options.Optional = true;
options.ReloadOnChange = true; // 热加载
options.OnLoadException = exceptionContext => { exceptionContext.Ignore = true; }; //忽略异常
});
});
6、项目中读取配置
[HttpGet]
public string Get([FromServices]IConfiguration configuration)
{
return $"userName:{configuration["UserName"]},password:{configuration["Password"]}";
}
输出:userName:fan,password:123456
多层级配置
Consul中的key有层级结构,可以将配置放到目录中,如果有多个服务需要从配置中心读取配置,可以将每个服务的配置放到对应的目录中,如下:
目录创建:
添加配置源:
//配置相关
builder.Host.ConfigureAppConfiguration(config => {
config.AddConsul("Service1/appsettings.json", options =>
{
options.ConsulConfigurationOptions = cco => { cco.Address = new Uri("http://127.0.0.1:8500"); }; //consul地址
options.Optional = true;
options.ReloadOnChange = true; // 热加载
options.OnLoadException = exceptionContext => { exceptionContext.Ignore = true; }; //忽略异常
});
});