经过spring cloud gateway 网关访问nacos上的服务
前面的博文已经叙述了如何将服务注册到nacos,今天这里说一下如何通过网关访问nacos上注册的服务。网关使用的是spring cloud gateway 。首先注册到nacos一个spring boot web服务,作为服务提供者。配置网关服务新建Spring boot项目,添加依赖<dependency><groupId>or...
·
前面的博文已经叙述了如何将服务注册到nacos,今天这里说一下如何通过网关访问nacos上注册的服务。网关使用的是spring cloud gateway 。
- 首先注册到nacos一个spring boot web服务,作为服务提供者。
- 配置网关服务
新建Spring boot项目,添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<!--nacos服务注册与发现-->
<!-- nacos 的服务注册与发现 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
注册到nacos配置
spring:
cloud:
nacos:
discovery:
register-enabled: true
server-addr: 192.168.0.254:8848 # nancos地址
application:
name: gateWay
server:
port: 8081
启动类配置
package com.gateway.gateway;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;
@EnableDiscoveryClient // 启用服务注册和发现
@RestController // 提供一个简单的降级页面
@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
/**
* @Title: fallback
* @Description: 一个简单的降级页面
* @return
*/
@RequestMapping("/fallback")
public Mono<String> fallback() {
// Mono是一个Reactive stream,对外输出一个“fallback”字符串。
return Mono.just("fallback");
}
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
// 配制一个路由,把 http://网关地址:网关端口/demo/ 下的请求路由到 demo-service 微服务中
.route(p -> p
.path("/concurrent-test/**") //url匹配
.uri("lb://concurrent-test")) // 将请求路由到指定目标, lb开头是注册中心中的服务, http/https 开头你懂的
.build();
}
}
- 启动网关服务
发现两个服务都已经注册到nacos
使用postman,请求网关,成功返回数据
更多推荐
已为社区贡献4条内容
所有评论(0)