我正在尝试使用 Spring Cloud Gateway 和 Consul 为我的服务制定通用路由规则。服务在 Consul 中正确注册,网关可以毫无问题地找到它们。
问题是,我想制定一个通用规则来匹配我的服务。例如,我的网关上确实有一个 hello-service 和 goodbye-service 以及以下 RouteLocator:
@SpringBootConfiguration
@EnableAutoConfiguration
public class ConsulGatewayApplication {
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route(r -> r.path("/hello-service/**")
.filters(f -> f.stripPrefix(1))
.uri("lb://hello-service")
)
.route(r -> r.path("/goodbye-service/**")
.filters(f -> f.stripPrefix(1))
.uri("lb://goodbye-service")
)
.build();
}
public static void main(String[] args) {
SpringApplication.run(ConsulGatewayApplication.class, args);
}
}
现在想象一个有很多微服务的环境,使用当前的解决方案,我必须为每个微服务制定一个路由规则。
我想要的是制定一个通用且更简单的路由规则,例如通配符。如果路径中包含*-service,则应该发送到指定的服务,如:
- 如果路径是/a-service/,它应该路由到a-service;
- 如果路径是/b-service/,应该路由到b-service等等;
没有明确为 a-service 和 b-service 制定规则。
这可能吗?