摘要: ZUUL没有为输入路径选择正确的目标URL,因为它没有严格匹配输入路径。
下面是我的zuul路线:
zuul:
routes:
auth:
path: /v1/txn/**
url: http://localhost:8900/v1/cardhostauth
cardproduct:
path: /v1/customer/card/product/**
url: http://localhost:8800/v1/customer/card/product
cardcomposite:
path: /v1/customer/**
url: http://localhost:8400/v1/composite
对于输入路径:“ / v1 / customer / card / product /”,应该选择-http://localhost:8800/v1/customer/card/product,但选择http://localhost:8400/v1/composite。我的期望是,路径模式匹配会按指定的顺序进行,并且比较严格,但似乎无法正常工作。
当您为相似的输入路径定义了多个路由时,您能让我知道ZUUL是如何工作的吗?
Thx
P.S-当我在AWS中通过Docker运行时,我可以看到此问题,但是当我从Eclipse运行时,该问题不会出现。 zuul路由的顺序取决于spring zuul jar(spring-cloud-starter-netflix-zuul-2.0.0.RELEASE与2.0.1.RELEASE)
答案 0 :(得分:1)
对于基于最佳匹配选择路线,我发现此线程很有帮助(感谢@maximdim)。基本上,您可以编写自己的自定义路由器来选择最佳匹配路由。
https://github.com/spring-cloud/spring-cloud-netflix/issues/2408
希望这会有所帮助。 (这是我的第一个答案,如果不好的话,我深表歉意。)
答案 1 :(得分:1)
根据Zuul的官方文档编辑答案:https://cloud.spring.io/spring-cloud-netflix/multi/multi__router_and_filter_zuul.html
如果您需要保留路线的路线,则需要使用 YAML文件,因为使用属性文件时顺序丢失。的 以下示例显示了这样的YAML文件:
application.yml。
df = pandas.DataFrame([ {'Firm': 'A', 'y1_bin': 'binA', 'y2_bin': 'binA', 'y3_bin': 'binB'}, {'Firm': 'A', 'y1_bin': 'binA', 'y2_bin': 'binA', 'y3_bin': 'binB'}, {'Firm': 'B', 'y1_bin': 'binA', 'y2_bin': 'binA', 'y3_bin': 'binB'}, {'Firm': 'B', 'y1_bin': 'binA', 'y2_bin': 'binA', 'y3_bin': 'binB'}, ... ]) my_dict = dict(zip(df.Firm, [list(df.get(f'y{idx}_bin').values) for idx in range(1, 31)])) #Output {'A': ['binA', 'binA', 'binA', 'binA'], 'B': ['binB', 'binB', 'binB', 'binB'] ... }
如果要使用属性文件,则旧路径可能会以 用户路径的最前面,使用户路径无法访问。
确保您使用的是Spring Cloud的最新稳定版本(当前为2.0.2)
答案 2 :(得分:1)
我从两年前就开始与zuul合作,我认为使用zuul路线的最佳方法是当您使用某些发现服务(例如注册您的应用程序的Eureka服务)时。
所以您只需要添加service-id
var quotes = ["quote 1", "quote 2", "quote 3"];
function newQuote() {
var randomNumber = Math.floor(Math.random() * (quotes.length));
document.getElementById('quoteDisplay').innerHTML = quotes[randomNumber];
}