Spring Cloud Gateway从注册中心自动注册配置路由信息
Spring Cloud Gateway 可以结合 Spring Cloud 服务发现功能,自动从注册中心获取服务列表来配置路由。以下是一个简单的例子:
- 在
pom.xml
中添加依赖:
<dependencies>
<!-- Spring Cloud Gateway -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- Spring Cloud Discovery Client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
- 配置
application.yml
:
spring:
cloud:
gateway:
discovery:
locator:
enabled: true # 开启从注册中心通过服务ID获取实例列表并自动转换为路由的功能
routes:
- id: service-route
# 假设已经有服务注册在Eureka,并且服务ID为service-id
uri: lb://service-id # 使用服务ID进行路由
predicates:
- Path=/service/** # 匹配进入网关的路径
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/ # Eureka服务注册中心地址
- 启动类添加
@EnableDiscoveryClient
注解:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
以上配置将启动一个 Spring Cloud Gateway,它会自动从 Eureka 注册中心获取服务列表,并为每个服务创建一个路由,路径为 /service/**
。当请求到达网关时,它会根据服务ID进行负载均衡转发。
评论已关闭