Ocelot之前我们转发上下游的请求转发配置都是通过ocelot.json配置文件里写的,现在通过和Consul搭配来实现服务的请求转发,不用再ocelot.json上进行配置了。
这是对之前的几篇文章的继续,所以需要从前面的几篇文章继续下来的。
继续修改之前的Gateway项目,修改其中的ocelot.json配置
{
"ReRoutes": [
{
"UpstreamPathTemplate": "/Service2/{url}",
"UpstreamHttpMethod": [ "Get", "Post" ],
"UseServiceDiscovery": true,
"ServiceName": "demoName",
"DownstreamPathTemplate": "/api/{url}",
"DownstreamScheme": "http",
//"DownstreamHostAndPorts": [
// {
// "Host": "localhost",
// "Port": 5001
// }
//],
}
],
"GlobalConfiguration": {
"ServiceDiscoveryProvider": {
"Host": "127.0.0.1",
"Port": 8500,
"Type": "Consul"
}
}
}
其中在GlobalConfiguration配置节点中,开启了ServiceDiscoveryProvider服务发现,我们的Consul运行在8500端口,使用指定了ip和端口,以及type是通过Consul来实现服务发现的。
在路由中也需要开启服务发现 "UseServiceDiscovery": true
设置ServiceName为Consul中设置的name
修改Consul的配置文件
{
"service": {
"id": "consul-service-test",
"name": "demoName",
"tags": [ "test" ],
"address": "127.0.0.1",
"port": 5001,
"checks": [
{
"http": "http://127.0.0.1:5001/api/Health/Index",
"interval": "10s"
}
]
}
}
这样我们将之前设定的DownstreamHostAndPorts注释掉了,运行此Gateway项目端口指定5000,通过http://localhost:5000/Service2/values/GetById?id=123
还是可以访问到的运行在端口5001的Service1的webapi的。