Net6集成Nacos实现服务注册

编程入门 行业动态 更新时间:2024-10-25 18:31:53

Net6集成<a href=https://www.elefans.com/category/jswz/34/1769600.html style=Nacos实现服务注册"/>

Net6集成Nacos实现服务注册

Net6集成Nacos实现服务注册

  • 一、服务注册
    • 1.创建WebAPI项目
    • 2.安装Nuget包
    • 3.注册Nacos
    • Nacos配置文件(放在Appsetting.json或其他文件中)
    • 4.创建Api控制器
    • 5.运行效果
  • 二、注册多个服务
  • 三、配置中心
    • 1.设置配置
    • 2.读取配置
    • 3.展示效果
    • 4.设置多个配置项

Nacos安装
nacos-sdk-csharp Nuget包作者博客

一、服务注册

1.创建WebAPI项目

2.安装Nuget包

nacos-sdk-csharp
nacos-sdk-csharp.AspNetCore
nacos-sdk-csharp.Extensions.Configuration
nacos-sdk-csharp.IniParser
nacos-sdk-csharp.YamlParser
Swashbuckle.AspNetCore

3.注册Nacos

builder.Services.AddNacosAspNet(builder.Configuration);

Nacos配置文件(放在Appsetting.json或其他文件中)

  "nacos": {"EndPoint": "","ServerAddresses": [ "http://127.0.0.1:8848" ],"DefaultTimeOut": 15000,"Namespace": "ec934a6e-36f5-4f1a-90f4-b74824da42a2","ListenInterval": 1000,"ServiceName": "BaseApi","GroupName": "DEFAULT_GROUP","ClusterName": "DEFAULT","Ip": "","PreferredNetworks": "","Port": 0,"Weight": 100,"RegisterEnabled": true,"InstanceEnabled": true,"Ephemeral": true,"Secure": false,"AccessKey": "","SecretKey": "","UserName": "","Password": "","ConfigUseRpc": true,"NamingUseRpc": false,"NamingLoadCacheAtStart": "","LBStrategy": "WeightRandom","Metadata": {"aa": "bb","cc": "dd"}}

4.创建Api控制器

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;namespace NacosService.Controllers
{[Route("api/[controller]")][ApiController]public class ValuesController : ControllerBase{private readonly Nacos.V2.INacosNamingService _svc;public ValuesController(Nacos.V2.INacosNamingService svc){_svc = svc;}[HttpGet]public string Get(){return "Ok~" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");}/// <summary>/// 从nacos中获取服务并选一个调用/// </summary>/// <returns></returns>[HttpGet("test")]public async Task<string> Test(){// 这里需要知道被调用方的服务名var instance = await _svc.SelectOneHealthyInstance("BaseApi", "DEFAULT_GROUP");var host = $"{"127.0.0.1"}:{instance.Port}";var baseUrl = instance.Metadata.TryGetValue("secure", out _)? $"https://{host}": $"http://{host}";if (string.IsNullOrWhiteSpace(baseUrl)){return "empty";}var url = $"{baseUrl}/api/values";using var client = new HttpClient();var result = await client.GetAsync(url);return await result.Content.ReadAsStringAsync();}}
}

5.运行效果

二、注册多个服务

启动Nacos

startup.cmd -m standalone

启动项目,因为要启动多个项目,所以通过CMD在不同端口启动项目

dotnet yourapp.dll --urls=http://localhost:yourport

开启三个项目
dotnet DesignMode.dll --urls=http://127.0.0.1:5001
dotnet DesignMode.dll --urls=http://127.0.0.1:5000
dotnet DesignMode.dll --urls=http://127.0.0.1:5003

查看项目注册效果

三、配置中心

参考文章一
参考文章二

1.设置配置

设置如下配置信息

2.读取配置

注册配置中心

//添加配置中心
builder.Host.ConfigureAppConfiguration((context, builder) =>
{var config = builder.Build();builder.AddNacosV2Configuration(config.GetSection("NacosConfig"));
});

appsetting.json文件下增加如下配置信息

  "NacosConfig": {"Listeners": [{"Optional": false,"DataId": "Test01","Group": "20231019"}],"Optional": false,"Namespace": "ec934a6e-36f5-4f1a-90f4-b74824da42a2","ServerAddresses": [ "http://127.0.0.1:8848/" ]}

通过Configuration读取Nacos的配置信息

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;namespace NacosService.Controllers
{[Route("api/[controller]")][ApiController]public class ValuesController : ControllerBase{private readonly Nacos.V2.INacosNamingService _svc;private readonly IConfiguration _configuration;public ValuesController(Nacos.V2.INacosNamingService svc, IConfiguration configuration){_svc = svc;_configuration = configuration;}[HttpGet]public string Get(){return "Ok~" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff");}[HttpGet][Route("GetConfig")]public string GetConfig(){var appName = _configuration["Name"];return appName;}}
}

3.展示效果

4.设置多个配置项

添加三个配置选项

添加如下三个监听

 "NacosConfig": {"Listeners": [{"Optional": false,"DataId": "Test01","Group": "20231019"},{"Optional": false,"DataId": "Test02","Group": "20231019"},{"Optional": false,"DataId": "Test03","Group": "20231020"}],"Optional": false,"Namespace": "ec934a6e-36f5-4f1a-90f4-b74824da42a2","ServerAddresses": [ "http://127.0.0.1:8848/" ]}

分别获取三个配置项中的配置

   [HttpGet][Route("GetConfig")]public string GetConfig(){var Test01 = _configuration["Name"];var Test02 = _configuration["Name2"];var Test03 = _configuration["Address"];return "Test01: "+Test01 + "   "+"Test02:"+Test02 + "   "+"Test03:" +Test03;}

更多推荐

Net6集成Nacos实现服务注册

本文发布于:2023-12-06 16:59:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1668228.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Nacos

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!