Spring Cloud Gateway中的路由顺序

时间:2019-05-06 05:53:40

标签: java spring spring-boot spring-cloud spring-cloud-gateway

我们正在使用RouteDefinitionLocator的实现以编程方式实现路由。我们有两个服务应在同一路由路径上注册,如果其中一个不存在,则其中之一将作为备用。具有特定路径的首选路线是:

RouteDefinition{id='CompositeDiscoveryClient_ms-1400133464', predicates=[PredicateDefinition{name='Path', args={pattern=/yambas/rest/apps/*/models/ms/**}}], filters=[FilterDefinition{name='RewritePath', args={regexp=/yambas/rest/apps/(?<remaining>.*), replacement=/ms/apps/${remaining}}}], uri=lb://ms, order=0}

更通用的一种,只有在找到其他路线时才应触发:

RouteDefinition{id='CompositeDiscoveryClient_yambas-1171178634', predicates=[PredicateDefinition{name='Path', args={pattern=/yambas/rest/**}}], filters=[], uri=lb://yambas, order=0}

因此,在调用/yambas/rest/apps/bla/models/ms时,应使用第一个路由,而在调用/yambas/rest/apps/bla/models/otherms/*时,应使用第二个(fallback)。

问题是,即使是路径上的 order 属性似乎也无法解决该问题;目前,我们发现无法设置此顺序/路线优先级。这是生菜吗?

2 个答案:

答案 0 :(得分:0)

似乎我们以错误的方式设置了顺序-将优先级较低的路由设置为1,将优先级较高的路由设置为0。

@spencergibb,绝对值得在文档中提及。

答案 1 :(得分:0)

更具体的路由应该首先出现在路由配置中,一般的路由在最后。

例如:http://gateway-url/v1/accounts/** 总是匹配 route-id-1 而 http://gateway-url/v1/** 匹配 route-id-2< /p>

HDF5ExtError                              Traceback (most recent call last) ~\anaconda3\lib\site-packages\pandas\io\pytables.py in open(self, mode, **kwargs)