consul系列文章02---替換掉.netcore的配置檔案

zhengwei_cq發表於2022-05-29

如果是開發微服務的專案,多個服務的配置管理起來比較麻煩,需要集中管理,也就是需要有配置中心:

consul整合配置中心的思路:讀取配置檔案時不在從本地的應用中讀取,而是從consul的KEY/value中讀取

整合步驟:

1、首先,安裝Consul,具體安裝步驟本文就不詳細介紹了,請移步我的系列文章01,當開啟 http://127.0.0.1:8500 可以看到Consul的UI介面代表安裝成功。

2、安裝NuGet包:Winton.Extensions.Configuration.Consul

3、Program.cs檔案修改

 .ConfigureAppConfiguration((hostingContext, config) =>
               {

                   var cancellationTokenSource = new CancellationTokenSource();

                   var env = hostingContext.HostingEnvironment;
                   hostingContext.Configuration = config.Build();
                   string consul_url = hostingContext.Configuration["Consul_Url"];
                   config.AddConsul(
                               $"{env.ApplicationName}/appsettings.{env.EnvironmentName}.json",
                          
                               options =>
                               {
                                   options.Optional = true;
                                   options.ReloadOnChange = true;
                                   options.OnLoadException = exceptionContext => { exceptionContext.Ignore = true; };
                                   options.ConsulConfigurationOptions = cco => 
                                   { cco.Address = new Uri(consul_url);
                                   };
                               }
                               );

                   hostingContext.Configuration = config.Build();
               })

 

 4、appsettings.Development.json增加配置

"Consul_Url": "http://192.168.139.129:8500",

5、注入客戶端服務類

 context.Services.AddTransient<IConsulClient, ConsulClient>();

6、在consul客戶端新建配置檔案,也就是將你的配置檔案拷貝過來就行了,注意:之前的註釋類容在這不可用,要去掉

 

 7、通過api可以測試一下,看你在consul中修改這個檔案後是否有效

我測試後是Ok的,這樣就可以替換掉所有的服務配置,將配置檔案集中管理起來了

細節:consul中的配置檔案及所有在路徑我們用了這段話:

$"{env.ApplicationName}/appsettings.{env.EnvironmentName}.json",
其中 env.EnvironmentName 在釋出應該時通過dockerfile檔案是可以改的,傳的引數如下:
這樣你在Consul中的檔名就要中改成:appsettings.Production.json

 

相關文章