您的位置:首页 > 编程语言 > ASP

AspNetCore 多环境配置 以及注册 消费Consul

2018-06-27 17:39 766 查看

本文主要记录 CoreApi 的多环境配置以及如何消费在consul中注册的Api 服务

1、创建三个CoreApi

我们在项目中创建三个站点分别为 UserServices “用户服务”,OrderServices “订单服务” 以及 StorehouseServices “库房服务”

、打开VS2017 创建Core Web 应用程序

#region //查看所有consul中被注册的服务
//查看所有consul中被注册的服务
using (var consulClient = new ConsulClient(c => { c.Address = new Uri("http://127.0.0.1:8500"); c.Datacenter = "dc1"; }))
{

var services = consulClient.Agent.Services().Result.Response;
//var ss = services.Values.Where(s => s.Service.Equals("UserServices", StringComparison.OrdinalIgnoreCase));//忽略大小写
foreach (var service in services.Values)
{
Console.WriteLine($"id={service.ID},name={service.Service},ip={service.Address},port={service.Port}");
}
}
#endregion
#region 客户端负载均衡
//客户端负载均衡
using (var consulClient = new ConsulClient(c => c.Address = new Uri("http://127.0.0.1:8500")))
{
var services = consulClient.Agent.Services().Result.Response.Values
.Where(s => s.Service.Equals("UserServices", StringComparison.OrdinalIgnoreCase));
if (!services.Any())
{
Console.WriteLine("找不到服务的实例");
}
else
{
// services.ElementAt(1);//如果环境中有多台服务器注册服务时我们可以使用随机数的方式,使用下标进行随机抽取一台服务进行使用
//集群中也可以轮训,当服务器性能差不多的时候可以轮着来
var service = services.ElementAt(Environment.TickCount % services.Count());
Console.WriteLine($"{service.Address}:{service.Port}");
}

}
#endregion

#region 调用服务方法     UserServices/api/Values
using (var consulClient = new ConsulClient(c => { c.Address = new Uri("http://127.0.0.1:8500"); c.Datacenter = "dc1"; }))
{
var AllServicesInfor = consulClient.Agent.Services().Result.Response;
//获取第一个实例 把UserServices转换为在Consul中注册的路径 然后进行访问
var UserServices = AllServicesInfor.Values.Where(s => s.Service.Equals("UserServices", StringComparison.OrdinalIgnoreCase)).First();//忽略大小写
using (System.Net.Http.HttpClient http = new HttpClient())
{
using (var HttpContent = new StringContent("", System.Text.Encoding.UTF8, "application/json"))
{
var ss = http.PostAsync($"http://{UserServices.Address}:{UserServices.Port}/api/Values", HttpContent);
string sss = ss.Result.RequestMessage.ToString();
}
}
}
#endregion


View Code
项目链接

链接:https://pan.baidu.com/s/1V0YcX1kFJg752icNICTuQQ 密码:1s47

有不足之处 希望大家指出相互学习,

  本文[b]原创:转载请注明出处 谢谢![/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: