NET CORE 8 与nacos配合使用

 nocos 2.2.3

nacos-sdk-csharp
nacos-sdk-csharp.AspNetCore
nacos-sdk-csharp.Extensions.Config
nacos-sdk-csharp.IniParser
nacos-sdk-csharp.YamlParser

上面五个包我都装了,版本1.3.10

 

Program.cs 的main方法中 

UpdateAppSettingsAsync 
 //环境变量,优先级最高,用于docker 部署
 if (builder.Configuration["NacosConfig:ServerAddresses"] != null)
 {
     try
     {
         UpdateAppSettingsAsync("NacosConfig:ServerAddresses", builder.Configuration["NacosConfig:ServerAddresses"].Split(",")).Wait();
         UpdateAppSettingsAsync("NacosConfig:Namespace", builder.Configuration["NacosConfig:Namespace"]).Wait();
         UpdateAppSettingsAsync("NacosConfig:Password", builder.Configuration["NacosConfig:Password"]).Wait();
         UpdateAppSettingsAsync("NacosConfig:UserName", builder.Configuration["NacosConfig:UserName"]).Wait();
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
 builder.Configuration.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);

 builder.Configuration.AddNacosV2Configuration(builder.Configuration.GetSection("NacosConfig"));
 builder.Services.AddNacosV2Config(builder.Configuration.GetSection("NacosConfig"));
 builder.Services.AddNacosAspNet(builder.Configuration, "NacosConfig");
 if (!string.IsNullOrWhiteSpace(builder.Configuration["Urls"]))
     builder.WebHost.UseUrls(builder.Configuration["Urls"]);
 // 临时构建ServiceProvider
 var tempProvider = builder.Services.BuildServiceProvider();
 var nacosConfigService = tempProvider.GetRequiredService<INacosConfigService>();
 var listeners = builder.Configuration.GetSection("NacosConfig:Listeners");
 //获取nacos数据库配置构建数据库服务
 foreach (var item in listeners.GetChildren())
 {
     var dataSourceConfig = nacosConfigService.GetConfig(item.GetSection("DataId").Value, item.GetSection("Group").Value, 3000).Result;

     var dic = YamlConfigurationStringParser.Instance.Parse(dataSourceConfig);
     // Console.WriteLine(dataSourceConfig);
     if (dic.Keys.Contains("datasource:base:url"))
     {
         string url = dic["datasource:base:url"].ToString();
         string username = dic["datasource:base:username"].ToString();
         string password = dic["datasource:base:password"].ToString();
         builder.Services.AddSqlSugarSetupBaseDB(url, username, password);
     }
     //redis
     if (dic.Keys.Contains("spring:data:redis:host"))
     {
         string redisHost = dic["spring:data:redis:host"].ToString();
         string redisPort = dic["spring:data:redis:port"].ToString();
         string redisDatabase = dic["spring:data:redis:database"].ToString();
         string redisConnectString = redisHost + ":" + redisPort + ",defaultDatabase=" + redisDatabase;
         if (dic.Keys.Contains("spring:data:redis:password"))
         {
             string redisPassword = dic["spring:data:redis:password"].ToString();
             redisConnectString += ",password=" + redisPassword;
         }
         //连接池
         if (dic.Keys.Contains("spring:data:redis:lettuce:pool"))
         {
             string redisPoolSize = dic["spring:data:redis:lettuce:pool:max-active"].ToString();
             redisConnectString += ",poolsize=" + redisPoolSize;
         }
         var rds = new CSRedis.CSRedisClient(redisConnectString);
         RedisHelper.Initialization(rds);
         builder.Services.AddSingleton<IDistributedCache>(new Microsoft.Extensions.Caching.Redis.CSRedisCache(RedisHelper.Instance));
     }

 }

 

appsettings.json结构

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "Urls": "http://*:9666",
  "NacosConfig": {
    "Listeners": [
      {
        "Optional": false,
        "DataId": "datasource.yml",
        "Group": "DEFAULT_GROUP"
      },
      {
        "Optional": false,
        "DataId": "base.yml",
        "Group": "DEFAULT_GROUP"
      },
      {
        "Optional": false,
        "DataId": "env.yml",
        "Group": "DEFAULT_GROUP"
      }
    ],
    "EndPoint": "",
    "ServerAddresses": [
      "http://192.168.1.1:8848"
    ],
    "DefaultTimeOut": 15000,
    "Namespace": "dev",
    "ListenInterval": 1000,
    "ServiceName": "ServiceName",
    "GroupName": "DEFAULT_GROUP",
    "ClusterName": "DEFAULT",
    "Ip": "",
    "PreferredNetworks": "",
    "Port": 0,
    "Weight": 100,
    "RegisterEnabled": true,
    "InstanceEnabled": true,
    "Ephemeral": true,
    "Secure": false,
    "AccessKey": "",
    "SecretKey": "",
    "UserName": "nacos",
    "Password": "password",
    "ConfigUseRpc": false,
    "NamingUseRpc": false,
    "NamingLoadCacheAtStart": ""
  }
}

  

 

posted @ 2025-04-27 17:26  清风神剑  阅读(93)  评论(0)    收藏  举报