spring cloud gateway 路由uri怎么配多个?

routes:
-   id: 1
uri: http://10.10.11.42:8000/module/abc,http://10.10.11.42:8001/module/abc1
predicates:
- Before=2020-01-01T00:00:00+08:00[Asia/Shanghai]
- Path=/module/abc

类似于这样的一个路由, URI有多个实例的话, 这地儿怎么给它配置多个IP? 试了试上面的这种配置, 路由的时候只会路由第一个IP, 源码里发现只会取第一个, 咋玩?

public RouteDefinition(String text) {
int eqIdx = text.indexOf(61);
if (eqIdx <= 0) {
throw new ValidationException("Unable to parse RouteDefinition text '" + text + "', must be of the form name=value");
} else {
this.setId(text.substring(0, eqIdx));
String[] args = StringUtils.tokenizeToStringArray(text.substring(eqIdx + 1), ",");
this.setUri(URI.create(args[0]));
for(int i = 1; i < args.length; ++i) {
this.predicates.add(new PredicateDefinition(args[i]));
}
}
}

回答

开启动态路由,把这个网关也注册进注册中心里,然后抓取微服务提供者的集群即可

网关和服务不在同一个eureka,只能ip调用,然后服务有多个实例,如何配置多个uri哇

参考 https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.3.RELEASE/reference/html/#the-weight-route-predicate-factory

引用来自“听声”的评论

网关和服务不在同一个eureka,只能ip调用,然后服务有多个实例,如何配置多个uri哇

没法再uri中配置多个地址,换个思路 多个uri做权重 如下:

id: id1

uri: http://127.0.0.1:8888

predicates:

    Weight=gruop1, 10

    path=/pgw/**

id: id2

uri: http://127.0.0.1:9999

predicates:

    Weight=group1, 10

    path=/pgw/**

 

 

 

以上是spring cloud gateway 路由uri怎么配多个?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>