0

我正在尝试使用 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 制定规则。

这可能吗?

4

0 回答 0