.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上) (2)

OrdersController.cs:

[Route("[controller]")] [ApiController] public class OrdersController : ControllerBase { private readonly ILogger<OrdersController> _logger; private readonly IConfiguration _configuration; public OrdersController(ILogger<OrdersController> logger, IConfiguration configuration) { _logger = logger; _configuration = configuration; } [HttpGet] public IActionResult Get() { string result = $"【订单服务】{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}——" + $"{Request.HttpContext.Connection.LocalIpAddress}:{_configuration["ConsulSetting:ServicePort"]}"; return Ok(result); } }

HealthCheckController.cs:

[Route("[controller]")] [ApiController] public class HealthCheckController : ControllerBase { /// <summary> /// 健康检查接口 /// </summary> /// <returns></returns> [HttpGet] public IActionResult Get() { return Ok(); } }

至此就完成了服务注册,取消注册,健康检查等功能的代码编写。

同样的改造一下产品服务,代码差不多一样,就不贴了。

运行服务

继续在docker中运行服务实例,不习惯docker的话用控制台启动也行。--ConsulSetting:ServicePort参数就是传入容器的端口信息。

docker build -t orderapi:1.0 -f ./Order.API/Dockerfile . docker run -d -p 9060:80 --name orderservice orderapi:1.0 --ConsulSetting:ServicePort="9060" docker run -d -p 9061:80 --name orderservice1 orderapi:1.0 --ConsulSetting:ServicePort="9061" docker run -d -p 9062:80 --name orderservice2 orderapi:1.0 --ConsulSetting:ServicePort="9062" docker build -t productapi:1.0 -f ./Product.API/Dockerfile . docker run -d -p 9050:80 --name productservice productapi:1.0 --ConsulSetting:ServicePort="9050" docker run -d -p 9051:80 --name productservice1 productapi:1.0 --ConsulSetting:ServicePort="9051" docker run -d -p 9052:80 --name productservice2 productapi:1.0 --ConsulSetting:ServicePort="9052"

.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上)

.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上)


.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上)


.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上)

至此,6个服务器实例都已运行,并且成功注册到Consul。

随便停止2个服务:

.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上)

.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上)


.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上)


可以看到停止的服务已经在Consul中被移除。注意,这个是我们停止程序时主动调用Consul移除的。

//应用程序终止时,取消注册 lifetime.ApplicationStopping.Register(() => { consulClient.Agent.ServiceDeregister(registration.ID).Wait(); });

当然程序发生异常,健康检查不能正确响应的话,Consul也会移除,有一点区别。

那么注册,发现,健康检查功能都完成了,下一步就该考虑客户端如何拿到这些服务实例的地址了。

代码放在:https://github.com/xiajingren/NetCoreMicroserviceDemo

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxypw.html