Net6集成Nacos实现服务注册

news2024/11/17 11:28:17

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.运行效果

在这里插入图片描述

在这里插入图片描述

二、配置中心

参考文章一
参考文章二

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;
        }

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1110321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java自定义线程池

一、线程池的概念和作用 线程池是一种用于管理和重用线程的机制。它允许你创建一个线程池&#xff0c;然后将任务提交给这个线程池&#xff0c;线程池会自动分配线程来执行这些任务。 线程池的作用是优化线程的管理和资源利用&#xff0c;以减少线程创建和销毁的开销&#xff0…

竞赛选题 深度学习交通车辆流量分析 - 目标检测与跟踪 - python opencv

文章目录 0 前言1 课题背景2 实现效果3 DeepSORT车辆跟踪3.1 Deep SORT多目标跟踪算法3.2 算法流程 4 YOLOV5算法4.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; *…

保姆级教程,教你AI数字人应该怎么制作?!

随着人工智能的发展&#xff0c;利用数字人制作短视频已经成为当下火热的项目&#xff0c;因为这种方式不需要真人出镜&#xff0c;避免了个人不上镜或者不喜上镜而不能做短视频的缺点&#xff0c;用数字人代替真人&#xff0c;不仅内容里人物有了&#xff0c;而且这种形式还非…

智能井盖是什么?万宾科技智能井盖传感器有什么特点

智能井盖是一种基于物联网和人工智能技术的新型城市设施。它不仅具备传统井盖的功能&#xff0c;还能通过数字化、自动化的方式实现远程监控和智能管理&#xff0c;提升城市运行效率和服务水平。 WITBEE万宾智能井盖传感器EN100-C2是一款井盖异动监测的传感终端。对窨井盖状态(…

shein面试:nacos无入侵配置,做过吗,怎么做?

说在前面 在40岁老架构师 尼恩的读者社区(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如阿里、滴滴、极兔、有赞、shein 希音、百度、网易的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 无入侵配置&#xff0c;做过吗&#xff0c;怎么做的&#xff1f;Na…

剪映怎么一键去水印?三分钟教会你

剪映怎么一键去水印&#xff1f;无论是使用剪映提供的方法还是专业的去水印软件&#xff0c;都能够帮助用户轻松去除视频中的水印&#xff0c;提高视频的质量和观赏性&#xff0c;以根据自己的需求和场景选择合适的方法进行操作&#xff0c;今天就教大家如何使用剪映一键去水印…

美光科技发布1β制程节点技术的16Gb DDR5存储器,领先业界 | 百能云芯

存储器大厂美光科技&#xff08;Micron&#xff09;宣布推出采用 1β 制程节点技术的 16Gb DDR5 存储器。美光 1β DDR5 DRAM 的内置系统功能速率可达 7200MT/s&#xff0c;目前已出货给所有资料中心及 PC 端客户。美光 1β DDR5 存储器采用先进高介电常数 CMOS 制程、四相位时…

Failed to process, please exclude the tableName or statementId.

说明&#xff1a;执行一次查询时&#xff0c;报下面这个错误&#xff1b; Failed to process, please exclude the tableName or statementId.排查结果&#xff0c;在Mapper.xml里面&#xff0c;对应的statement使用了复杂的函数&#xff0c; <select id"getLastEleRa…

ODrive移植keil(八)—— 闭环控制

目录 一、硬件接线二、官方代码操作2.1、力矩模式2.2、速度模式2.3、位置模式 三、移植后的代码操作3.1、力矩模式3.2、速度模式3.3、位置模式3.4、跳过上电校准3.4.1、手动输入参数3.4.2、flash保存参数 3.5、测试云台电机 四、代码说明五、定点运算和浮点运算 ODrive、VESC和…

全感知智能配电房:让电力运行可控、高效

在当今数字化、智能化的时代&#xff0c;全感知智能配电房的出现无疑为电力行业带来了革命性的变革。这种新型配电房不仅提高了电力供应的效率&#xff0c;还大大降低了运营成本&#xff0c;为我们的日常生活和工作提供了更稳定、更可靠的电力保障。 力安科技全感知智能配电…

Teleport

从官网中获取到的代码如下 App.vue <template><div class"outer"><h3>Tooltips with Vue 3 Teleport</h3><div><MyModal /></div></div> </template> <script setup> import MyModal from "./My…

pinia踩坑之旅——在组件外使用pinia

pinia踩坑之旅——在组件外使用pinia 缘由 最近在使用 pinia 开发项目时产生了一个 bug&#xff0c;说在定义 pinia 前使用了 pinia。 报错如下&#xff1a; 代码展示 先来看一个我的代码&#xff08;这里我新开了一个项目用于演示&#xff09;&#xff0c;如果懒得看代码的…

【Python基础】数值类型

int(整形) 在 Python 中定义变量是 不需要指定类型&#xff08;在其他很多高级语言中都需要&#xff09; 整形&#xff0c;也被称之为整数。整数就是数学中的数字。 整形在Python中不受长度限制大小范围 使用 type 函数可以查看一个变量的类型 In[1]: 1 Out[1]: 1In[2]: t…

Win10修改编辑hosts文件无法保存的处理方法

1.首先打开hosts文件所在位置&#xff0c;我们输入C:WindowsSystem32Driversetc后回车就可以打开了&#xff0c;右键hosts文件&#xff0c;选择属性。 2.点击hosts属性对话框里的“高级”。 3.在hosts的高级安全设置界面点击更改权限&#xff0c;在新弹出的对话框里点击添加按…

TStor CSP文件存储在大模型训练中的实践

业务背景 大模型作为人工智能领域的重要发展趋势&#xff0c;正在逐渐改变人们的生活和工作方式。随着近年来大模型领域技术的突破&#xff0c;各类语言模型、图像模型、视频模型快速演进&#xff0c;国内外市场也不断涌现出优秀的大模型研究及商业化平台&#xff0c;预期通过…

竞赛 深度学习人体语义分割在弹幕防遮挡上的实现 - python

文章目录 1 前言1 课题背景2 技术原理和方法2.1基本原理2.2 技术选型和方法 3 实例分割4 实现效果5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习人体语义分割在弹幕防遮挡上的应用 该项目较为新颖&#xff0c;适合作为竞…

GoogleNet论文精读

论文名&#xff1a;Going depper with convolutions论文下载地址&#xff1a;https://github.com/jixiuy/paper引言第一段&#xff1a;背景成绩1*1的卷积在channel上升维和降维&#xff0c;channel融合&#xff0c;计算方法上等价于FNNGAP&#xff08;全局平均池化&#xff09;…

协同云办公原来可以这么简单!只需掌握这5个技巧

随着云计算技术的发展&#xff0c;协同云办公已经成为越来越多企业和团队的必备工具。但是&#xff0c;对于很多人来说&#xff0c;如何高效地进行协同云办公却仍是一个挑战。本文将介绍五个简单的技巧&#xff0c;让你轻松掌握协同云办公的秘诀&#xff0c;让你的工作更高效、…

《潮玩产业发展报告(2023)》发布 泡泡玛特进军海外潮玩市场

近期&#xff0c;新华网联合中国社会科学院财经战略研究院发布了《超越潮流&#xff1a;千亿级潮玩产业彰显人文经济价值——潮玩产业发展报告&#xff08;2023&#xff09;》&#xff08;下称《报告》&#xff09;。针对潮玩产业快速发展&#xff0c;课题组组长、中国社会科学…

25台兰博基尼跑车赛道巡游!泡泡玛特MOLLY攒的局就是这么拉风

入秋以来气温逐渐转冷&#xff0c;但泡泡玛特的市场活动却持续升温&#xff1a;国内首个潮玩行业沉浸式IP主题乐园泡泡玛特城市乐园正式开园&#xff1b;2023PTS上海国际潮流玩具展&#xff1b;入驻美国第二大商场、布里斯班再拓新店等海外布局步伐不停……将广大消费者的身心带…