Spring Cloud Gateway的通用服务路由规则

时间:2018-07-04 14:21:20

标签: spring-cloud spring-cloud-gateway

我正在尝试使用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-service /,则应路由到a-service;
  • 如果路径为/ b-service /,则应路由到b-service,依此类推;

没有明确规定a服务和b服务的规则。

这可能吗?

0 个答案:

没有答案