我正在尝试使用Spring Cloud Gateway和Consul为我的服务制定通用路由规则。服务已在Consul中正确注册,并且网关可以毫无问题地找到它们。
问题是,我想制定一条通用规则来匹配我的服务。例如,我的网关上确实有hello服务和goodbye服务以及以下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服务和b服务的规则。
这可能吗?