Gateway从nacos中获取服务信息
1 加入nacos客户端依赖<!--nacos客户端--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
·
1 加入nacos客户端依赖
<!--nacos客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2 在主类上添加注解
添加注解启用nacos客户端:
package cn.jack;
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);
}
}
3 修改配置文件
server:
port: 7000
spring:
application:
name: api-gateway
cloud:
nacos:
discovery:
server-addr: localhost:8848 # nacos服务端地址
gateway:
discovery:
locator:
enabled: true # 启用探测器,让gateway可以发现nacos中的微服务
routes: # 路由数组(路由:就是当指定请求满足什么条件的时候,转发到哪个微服务)
- id: product_route # 当前路由的标识,要求唯一。默认uuid
uri: lb://service-product # lb指的是负载均衡(load balancing),service-product是nacos中微服务的名称
order: 1 # 路由的优先级,数字越小级别越高
predicates: # 断言(就是路由转发要满足的条件)
- Path=/product-serv/** # 当请求路径满足Path指定的规则时,才进行路由转发
filters: # 过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改
- StripPrefix=1 # 转发之前去掉1层路径
4 测试
5 简写版
Gateway实现从nacos中获取服务信息后,其实提供了默认的路由实现,也就是说我们可以不用配置路由。配置文件可以修改如下:
server:
port: 7000
spring:
application:
name: api-gateway
cloud:
nacos:
discovery:
server-addr: localhost:8848 # nacos服务端地址
gateway:
discovery:
locator:
enabled: true # 启用探测器,让gateway可以发现nacos中的微服务
再次运行测试,既然是默认实现的路由,那么访问地址就需要遵循定义的规范。
更多推荐
已为社区贡献6条内容
所有评论(0)