第一步:配置Consul(appsettings.json)
"Consul": { "ServiceName": "bpm", //当前服务名称 "IP": "127.0.0.1", //当前服务IP "Weight": "1", "Port": "5002" //当前服务端口 }
第二步:Consul扩展类(ConsulBuilderExtensions.cs)
public static class ConsulExtensions { public static void ConsulExtend(this IConfiguration configuration, string serviceName) { ConsulClient client = new(m => { m.Address = new Uri("http://127.0.0.1:8500/");//对应服务器的地址:consul的端口 m.Datacenter = "dc1"; }); //启动的时候在consul中注册实例服务 //在consul中注册的ip, port string ServiceName = configuration.GetSection("Consul")["ServiceName"]; string ip = configuration.GetSection("Consul")["IP"]; int port = int.Parse(configuration.GetSection("Consul")["Port"]); int weight = int.Parse(configuration.GetSection("Consul")["Weight"]); client.Agent.ServiceRegister(new AgentServiceRegistration() { ID = $"{configuration["ServiceName"]}-{Guid.NewGuid()}",//唯一的 Name = serviceName,//组(服务)名称(动态) Address = ip, Port = port,//不同的端口=>不同的实例 Tags = new string[] { weight.ToString() },//标签 Check = new AgentServiceCheck()//服务健康检查 { Interval = TimeSpan.FromSeconds(12),//间隔1s一次 检查 HTTP = $"http://{ip}:{port}/api/health/check", Timeout = TimeSpan.FromSeconds(5),//检测等待时间 DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(20)//失败后多久移除 } }); Console.WriteLine($"{ip}:{port}--weight:{weight}"); } }
第三步:Consul注册服务(Program.cs)
builder.Configuration.ConsulExtend(builder.Configuration.GetSection("Consul")["ServiceName"]);
第四步:创建心跳控制器(HealthController.cs)
[Route("api/[controller]")] [ApiController] public class HealthController : ControllerBase { [HttpGet("Check")] public ActionResult Check() { return Ok(); } }标签:GetSection,NetCore,Consul,ServiceName,注册,new,configuration,port From: https://www.cnblogs.com/microsoft-zh/p/17965038