Cài đặt từ nuget:
nacos-sdk-csharp.Extensions.Configuration
Để cài đặt Nacos thông qua Docker, lưu ý rằng các phiên bản mới mở thêm cổng 9848 và 9849 cho giao tiếp GRPC:
docker run --name nacos \
-e MODE=standalone \
-p 8848:8848 -d \
-p 9848:9848 \
-p 9849:9849 \
--restart always nacos/nacos-server:latest
Truy cập giao diện Nacos tại:
Cấu hình trong Nacos:
"nacos": {
"ServerAddresses": [ "http://192.168.0.196:8848" ],
"DefaultTimeOut": 15000,
"Namespace": "OrderService",
"ListenInterval": 1500,
"ServiceName": "OrderService",
"GroupName": "DEFAULT_GROUP",
"ClusterName": "DEFAULT",
"RegisterEnabled": true,
"InstanceEnabled": true,
"ConfigUseRpc": true,
"NamingUseRpc": true,
"Ephemeral": true,
"LBStrategy": "WeightRoundRobin"
},
Cấu hình .NET Core để đọc cấu hình từ Nacos:
Trong file appsettings.json:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"NacosSettings": {
"Listeners": [
{
"Optional": false,
"DataId": "OrderService",
"Group": "DEFAULT_GROUP"
}
],
"Optional": false,
"Tenant": "fa6bd7e2-ff16-4faf-b0f6-c6a3e0c509fa",
"ServerAddresses": [ "http://192.168.0.196:8848/" ]
}
}
Kích hoạt Nacos trong lớp khởi tạo ứng dụng:
namespace ServiceAPI
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, builder) =>
{
builder.AddCustomNacos();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
Mở rộng Nacos:
using Microsoft.Extensions.Configuration;
namespace Microsoft.Extensions.Configuration
{
public static class NacosExtension
{
public static void AddCustomNacos(this IConfigurationBuilder builder, string configKey = "NacosSettings")
{
builder.AddNacosV2Configuration(builder.Build().GetSection(configKey));
}
}
}
Đọc cấu hình từ Nacos:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace ServiceAPI
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
var configValue = Configuration.GetSection("version").Value;
var loggerFactory = services.BuildServiceProvider().GetService<ILoggerFactory>();
var logger = loggerFactory.CreateLogger<Startup>();
logger.LogInformation($"Giá trị từ Nacos: {configValue}");
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}