我正在运行一个依赖于spring云配置服务器的spring云网关实例。我的应用程序以给定的以下配置启动。
cloud:
gateway:
routes:
- id: route-foo
uri: lb://foo
predicates:
- Path=/api/foo/**
filters:
- name: RewritePath
args:
regexp: "/api/foo/(?<remaining>.*)"
replacement: "/${remaining}"
假设我对配置进行了修改,并在下面添加了一条额外的路由
- id: route-bar
uri: lb://bar
predicates:
- Path=/api/bar/**
filters:
- name: RewritePath
args:
regexp: "/api/bar/(?<remaining>.*)"
replacement: "/${remaining}"
执行POST到http://localhost:8080/actuator/refresh
会返回以下错误。
500 Server Error for HTTP POST "/actuator/refresh" (Encoded)
java.lang.IllegalArgumentException: Could not resolve placeholder 'remaining' in value "/${remaining}"
at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:178)
似乎Spring正在尝试解析我的重写路径替换并将其替换为环境变量。我的选择是什么?
您正在运行spring,试图替换配置中的变量。
有两种解决方案
更改替换:“/${remaining}”
替换:“/$\{剩余}”
RewriteGatewayFilterFactory在运行过滤器之前对配置进行替换。
@Bean
@Primary
public StandardReactiveWebEnvironment standardReactiveWebEnvironmentCustomizer(StandardReactiveWebEnvironment environment) {
environment.setIgnoreUnresolvableNestedPlaceholders(true);
return environment;
}
这将使所有无法解析的占位符单独存在于您的配置中,并且在刷新期间不会失败。我建议不要采用这种方法,因为如果您依赖要正确填充的字段,它可能最终会将一些问题延迟到运行时。
从理论上讲,你应该能够完成这个相同的功能与属性源Placeholder配置,我有一个困难的时间让它合作。
使用spring-Cloud网关2.0.0. M5,我在配置文件(application.yml)中定义路由。我试图通过调用POST来更新这些路由 /application/gateway/refresh. 修改后的路由或新路由不会被刷新,即使我看到(带有断点)实际上执行了刷新例程。 当在配置文件中定义路由时,刷新应该工作吗?我错过了什么? 用例是在spring配置服务器中定义的路由。
当我使用spring cloud gateway集成spring cloud sleuth时,我发现性能比单独使用spring cloud gateway慢得多。是否有优化方案? 机器配置:6芯,16g Spring云网关:5331.9 tps Spring云网关Spring云侦探:4119.47 tps “Spring云网关”比“Spring云网关Spring云侦探”慢约1000-2000tps
我有一个带有一些endpoint的anexo API,比如: 如何将Spring Cloud Gateway与这些endpoint一起使用?
我正在研究一个示例poc,我正在尝试集成Spring云api网关 在我的pom.xml中,我有 在我的应用程序中。yml我有 在我的主课上 我能够直接从它们各自的端口访问服务,但是当我试图从端口网关端口ie 9191访问api时,我得到 ***2022-09-08 16:23:34.644错误4128-[ctor-http-nio-3]a . w . r . e . abstracterrorwe
我为所有传入请求创建了全局路由,并使用AbstracTerrorWebExceptionHandler。 我的application.yml 运行应用程序时的日志: 谢谢你的帮助。
我使用的是堆栈下 SpringCloudGatewayHoxton发行版,Java1.8,Linux操作系统 我看到下面的异常在重启后消失,但在一段时间后再次出现。我没有为直接内存做任何显式设置。下面是使用的JVM参数- 有人能告诉我错误的原因吗?