netcore通过consul注册服务(入门二)
程序员文章站
2022-03-20 12:41:40
基础准备 1.创建asp.net core Web 应用程序选择Api 2.appsettings.json 配置consul服务器地址,以及本机ip和端口号信息 3.程序入口(program.cs)配置useurls,ip和port从配置文件(或者命令行中)读取(命令行启动方式:dotnet Co ......
基础准备
1.创建asp.net core web 应用程序选择api
2.appsettings.json 配置consul服务器地址,以及本机ip和端口号信息
{ "logging": { "loglevel": { "default": "warning" } }, "consul": { "ip": "127.0.0.1", "port": "8500" }, "service": { "name": "zyz" }, "ip": "localhost", "port": "6655", "allowedhosts": "*" }
3.程序入口(program.cs)配置useurls,ip和port从配置文件(或者命令行中)读取(命令行启动方式:dotnet consulserver.dll --ip localhost --port 8644)
using system; using system.collections.generic; using system.io; using system.linq; using system.threading.tasks; using microsoft.aspnetcore; using microsoft.aspnetcore.hosting; using microsoft.extensions.configuration; using microsoft.extensions.logging; namespace consulserver { public class program { public static void main(string[] args) { createwebhostbuilder(args).build().run(); } public static iwebhostbuilder createwebhostbuilder(string[] args) { var config = new configurationbuilder().addcommandline(args) .build();//获取配置信息 return webhost.createdefaultbuilder(args) .useurls($"http://{ config["ip"]}:{config["port"]}")//配置ip地址和端口地址 .usestartup<startup>(); } } }
4.配置基础数据,并且调用注册consul接口
using system; using system.collections.generic; using system.linq; using system.threading.tasks; using consul; using consulserver.consulapi; using consulserver.entity; using microsoft.aspnetcore.builder; using microsoft.aspnetcore.hosting; using microsoft.aspnetcore.mvc; using microsoft.extensions.configuration; using microsoft.extensions.dependencyinjection; using microsoft.extensions.logging; using microsoft.extensions.options; namespace consulserver { public class startup { public startup(iconfiguration configuration) { configuration = configuration; } public iconfiguration configuration { get; } // this method gets called by the runtime. use this method to add services to the container. public void configureservices(iservicecollection services) { services.addmvc().setcompatibilityversion(compatibilityversion.version_2_1); } // this method gets called by the runtime. use this method to configure the http request pipeline. public void configure(iapplicationbuilder app, ihostingenvironment env, iapplicationlifetime lifetime) { if (env.isdevelopment()) { app.usedeveloperexceptionpage(); } ////配置信息单例 //configsingleton.setconfigsingleton(configuration); app.usemvc(); consulentity consulentity = new consulentity { ip = configuration["ip"], port = int.parse(configuration["port"] ), servicename = "zyz", consulip = configuration["consul:ip"], consulport = convert.toint32(configuration["consul:port"]) }; app.registerconsul(lifetime, consulentity); } } }
5.配置注册信息
using consul; using consulserver.entity; using microsoft.aspnetcore.builder; using microsoft.aspnetcore.hosting; using microsoft.extensions.configuration; using system; using system.collections.generic; using system.linq; using system.threading.tasks; namespace consulserver.consulapi { /// <summary> /// consul /// </summary> public static class appbuilderextensions { /// <summary> /// 注册consul /// </summary> /// <param name="app"></param> /// <param name="lifetime"></param> /// <param name="serviceentity"></param> /// <returns></returns> public static iapplicationbuilder registerconsul(this iapplicationbuilder app, iapplicationlifetime lifetime, consulentity serviceentity) { //consul地址 action<consulclientconfiguration> configclient = (consulconfig) => { consulconfig.address = new uri($"http://{serviceentity.consulip}:{ serviceentity.consulport}"); consulconfig.datacenter = "dc1"; }; //建立连接 var consulclient = new consulclient(configclient); var httpcheck = new agentservicecheck() { deregistercriticalserviceafter = timespan.fromseconds(5),//服务启动多久后注册 interval = timespan.fromseconds(10),//健康监测 http = string.format($"http://{serviceentity.ip}:{serviceentity.port}/api/health"),//心跳检测地址 timeout = timespan.fromseconds(5) }; //注册 var registrtion = new agentserviceregistration() { checks = new[] { httpcheck }, id = "zyzservice" + guid.newguid().tostring(),//服务编号不可重复 name = serviceentity.servicename,//服务名称 address = serviceentity.ip,//ip地址 port = serviceentity.port//端口 }; //注册服务 consulclient.agent.serviceregister(registrtion); return app; } } }
6.以命令行启动程序查看consul(dotnet consulserver.dll --ip localhost --port 8644)
上一篇: 各大学在天津录取分数线2021全国排名汇总!含最低位次(2022参考)
下一篇: 伙食费
推荐阅读
-
微服务(入门三):netcore ocelot api网关结合consul服务发现
-
springcloud微服务体系(二)—2.0G版 Consul注册中心搭建
-
netcore通过consul注册服务(入门一)
-
Spring Cloud 入门 Consul-Server服务注册
-
netcore通过consul注册服务(入门二)
-
Spring Cloud入门-Consul服务注册发现与配置中心(Hoxton版本)
-
spring cloud consul入门,服务注册和发现,配置中心使用入门示例
-
SpringCloud学习二之服务注册和服务发现Eureka入门服务消费者的搭建
-
Spring Cloud 入门 Consul-Server服务注册
-
netcore通过consul注册服务(入门一)