首页 > 其他分享 >Eureka NetCore 服务注册与发现

Eureka NetCore 服务注册与发现

时间:2023-03-29 17:05:02浏览次数:40  
标签:NetCore spring eureka client 注册 Eureka true public Discovery

1 创建springboot eureka项目。

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.7.8</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.8</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>3.1.4</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.9.1</version>
        </dependency>

    </dependencies>
@SpringBootApplication
@EnableEurekaServer
public class EurekaServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServiceApplication.class, args);
    }
}
spring.profiles.active=dev
spring.application.name=eureka-server

server.port=8765

eureka.environment=dev
eureka.server.enable-self-preservation=false
eureka.server.eviction-interval-timer-in-ms=5000
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

启动项目,地址栏输入 http://172.17.17.53:8765/  eureka成功启动 

 

 

 2 netcore3.1创建一个api项目,用于提供XXX服务

nuget项目引用 Steeltoe.Discovery.Eureka(我用的版本是3.2.3)

<PackageReference Include="Steeltoe.Discovery.Eureka" Version="3.2.3" />

appsettings.json配置文件添加:

  "spring": {
    "application": {
      "name": "coreApi"
    }
  },
  "eureka": {
    "client": {
      "serviceUrl": "http://localhost:8765/eureka/",
      "shouldFetchRegistry": true, // registering as a service
      "shouldRegisterWithEureka": true, // discovering services
      "validate_certificates": false
    },
    "instance": {
      //"port": 20000,
      "preferIpAddress": true
    }
  }

添加配置:

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDiscoveryClient(Configuration);
            services.addController();

        }

添加被服务提供接口:api/usr/getUsrDto,下面是controller  action代码

        /// <summary>
        /// 查站点根目录、应用名、环境名
        /// </summary> 
        [HttpGet]
        public UsrDto getUsrDto()
        {
            return new UsrDto()
            {
                Age = 34,
                CreTime = DateTime.Now,
                Id = $"BaseDirectory={AppContext.BaseDirectory},ApplicationName={env.ApplicationName},EnvironmentName={env.EnvironmentName}",
                LoginAccount = "183xxxxxx",
                Score = 9823.123456m
            };
        }

启动项目,再刷新eureka 界面:

 

 

 发现我们写的服务已经注册进来 :coreApi

3 我们再用netcore建立一个此服务的消费(调用)项目,Steeltoe.Discovery.Eureka同样nuget引用,services.AddDiscoveryClient(Configuration);也相同。配置也基本相同:

  "spring": {
    "application": {
      "name": "coreApiClient"
    }
  },
  "eureka": {
    "client": {
      "serviceUrl": "http://localhost:8765/eureka/",
      "shouldFetchRegistry": true, // registering as a service
      "shouldRegisterWithEureka": true, // discovering services
      "validate_certificates": false
    },
    "instance": {
      //"port": 20001,
      "preferIpAddress": true
    }
  }

启动项目,再刷新eureka:

 

 发现消费服务也注册进来:COREAPICLIENT

我们再写个“消费”服务,来调用COREAPI 提供的服务接口:

    [ApiController]
    [Route("[controller]/[action]")]
    public class WeatherController : ControllerBase {

        private readonly ILogger<WeatherController> _logger;
        Steeltoe.Discovery.IDiscoveryClient _client;
        Steeltoe.Common.Discovery.DiscoveryHttpClientHandler _handler;
        private const string GET_SERVICES_URL = "http://coreapi/api/usr/getUsrDto";

        public WeatherController(ILogger<WeatherController> logger, Steeltoe.Discovery.IDiscoveryClient client) {
            _logger = logger;
            _client = client;
            _handler = new Steeltoe.Common.Discovery.DiscoveryHttpClientHandler(client);
        }

        [HttpGet]
        public async Task< string> getUsrDtoProxy() {
            var resp = await HttpClientHelper.GetHttpClient(_handler).GetAsync(GET_SERVICES_URL);
            var content = await resp.Content.ReadAsStringAsync();
            return content;
        }
    }

4 重新启动COREAPICLIENT项目,让上面写的代码生效,我们用postman试试 接口getUsrDtoProxy

http://localhost:20001/weather/getUsrDtoProxy

 

 5 结束,springcloud 提供微服务框架和平台,netcore用具体“业务”提供或消费服务。

 

标签:NetCore,spring,eureka,client,注册,Eureka,true,public,Discovery
From: https://www.cnblogs.com/jonney-wang/p/17269524.html

相关文章

  • IDEA使用技巧和注册教程
    ​编辑切换为居中添加图片注释,不超过140字(可选)IntelliJIDEA是一款流行的Java集成开发环境(IDE),它为开发者提供了许多有用的功能和工具来提高他们......
  • spring注册bean
    spring是怎么注册一个bean的doGetObjectFromFactoryBean:177,FactoryBeanRegistrySupport(org.springframework.beans.factory.support)getObjectFromFactoryBean:101,......
  • gitlab--Gitlab Runner安装与注册
    介绍GitlabRunner是一个开源项目,用于运行作业并将结果返回给gitlab。GitlabRunner通常于gitlabCI结合使用,GitlabCI是gitlab用于协调作业的开源持续集成服务......
  • 推荐一个前后端分离.NetCore+Angular快速开发框架
    今天给大家推荐一个开源项目,基于.NetCore开发的、前后端分离、前端有Vue、Angular、MVC多个版本的快速开发框架。项目简介这是一个基于.NetCore开发的快速开发框架,项目采......
  • Android开发 1_触控事件分发_触控在framework层上的注册
    前言此篇博客基于Android10版本,将讲解触控在系统层上的注册。Android的触控事件分发与其他事件分发来对比的话,可以说是很不一样的。如果你阅读此篇博客想去了解在fram......
  • 使用alloc_chrdev_region/register_chrdev_region/cdev注册字符设备和使用class在驱动
    前言在旧版本中使用register_chrdev函数注册字符设备,该函数只需给定主设备号即可。一旦确认了主设备号,该主设备号下的所有次设备号全部都没有用,并且在驱动加载成功后还需......
  • bing-create怎么样?如何申请注册?
    bing-Creator怎么样?ImageCreator是由微软推出的一款人工智能应用程序,它可以使用GPT-3模型生成图片。应用程序使用了DALL·E模型,它是OpenAI开发的一个图像生成......
  • 天池竞赛-阿里云注册
    1. 阿里云注册2.windows下安装docker和及ubuntu 3.学习视频......
  • 【转】NETCore下IConfiguration和IOptions的用法
    新建一个NETCoreWebAPI项目,在Startup.cs里就会开始使用IConfiguration和IOptions了,我们来看看如何使用。IConfiguration是用来加载配置值的,可以加载内存键值对、JSON或X......
  • [FastAPI-29]用户注册API-File字段需要在 Form之前
    importtypingfromfastapiimportFastAPI,Form,File,UploadFilefrompydanticimportBaseModelapp=FastAPI(title="注册接口")'''1.需要输入账号密码头......