当前位置: 首页 > news >正文

gateway网关实现路由基于nacos注册中心

      首先你需要启动nacos服务,才能开始下面的效果

image

 

image

 

image

 这里10010为网关端口

nacos你需要

image

当服务都启动后,你应该看到如下服务

image

 好了,下面开始上代码了

首先是网关部分

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.13</version><relativePath/></parent><properties><java.version>1.8</java.version><spring-cloud.version>2021.0.4</spring-cloud.version><spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version></properties><groupId>com.huting</groupId><artifactId>gateway-service</artifactId><version>1.0-SNAPSHOT</version><dependencyManagement><dependencies><!-- Spring Cloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- Alibaba Cloud --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency><!-- Gateway 网关 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><!-- Nacos 服务发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies></project>

  

package com.gate;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;/*** @Description:* @Author: qiuxie* @Create: 2025/11/12 21:05*/
@EnableDiscoveryClient
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

  application.properties

server.port=10010#spring.config.import=optional:nacos:${spring.application.name}.propertiesspring.application.name=gateway-service
spring.cloud.nacos.discovery.server-addr=192.168.31.60:8850
spring.cloud.nacos.discovery.service=${spring.application.name}
spring.cloud.nacos.discovery.namespace=gateway-test
management.endpoints.web.exposure.include=*spring.cloud.gateway.routes[0].id=user-service
spring.cloud.gateway.routes[0].uri=lb://user-service
spring.cloud.gateway.routes[0].predicates[0].name=Path
spring.cloud.gateway.routes[0].predicates[0].args[pattern]=/user/**spring.cloud.gateway.routes[1].id=login-route
spring.cloud.gateway.routes[1].uri=lb://user-service
spring.cloud.gateway.routes[1].predicates[0].name=Path
spring.cloud.gateway.routes[1].predicates[0].args[pattern]=/login/**spring.cloud.gateway.routes[2].id=order-service
spring.cloud.gateway.routes[2].uri=lb://order-service
spring.cloud.gateway.routes[2].predicates[0].name=Path
spring.cloud.gateway.routes[2].predicates[0].args[pattern]=/order/**logging.level.org.springframework.cloud.gateway=DEBUG#nacos配置
#2024.3.1 13:56 add
spring.cloud.nacos.config.server-addr=192.168.31.60:8850
spring.cloud.nacos.config.namespace=gateway-test
spring.cloud.nacos.config.group=DEFAULT_GROUP
spring.cloud.nacos.config.file-extension=propertieslogging.level.org.springframework.cloud.gateway.discovery=DEBUG# 设置Nacos客户端日志级别为DEBUG
logging.level.com.alibaba.nacos=DEBUGlogging.level.com.java=debug
logging.level.com.alibaba.nacos.shaded.io.perfmark=info
logging.level.web=debug

 接下来是user-service服务

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 继承 Spring Boot 父 POM,管理 Spring Boot 依赖版本 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</version><relativePath/> <!-- 从仓库查找父 POM --></parent><groupId>org.example</groupId><artifactId>gateway-nacos-demo</artifactId><version>1.0.0</version><name>Gateway Nacos Demo</name><description>Spring Boot + Gateway + Nacos 服务发现示例</description><properties><java.version>1.8</java.version><skipTests>true</skipTests><springcloud.version>2021.0.5</springcloud.version><alibaba.version>2021.0.5.0</alibaba.version></properties><!-- 依赖管理 --><dependencyManagement><dependencies><!--spring cloud依赖管理,引入了Spring Cloud的版本--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${springcloud.version}</version><type>pom</type><scope>import</scope></dependency><!--SCA --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!--SCA --></dependencies></dependencyManagement><dependencies><!-- Spring Boot 核心依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--tomcat容器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Nacos 服务发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies><build><plugins><!-- Spring Boot Maven 插件 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.7.15</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

  

package com.eg;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;/*** @Description:* @Author: qiuxie* @Create: 2025/11/12 21:28*/
@EnableDiscoveryClient
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

  

package com.eg;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @Description:* @Author: qiuxie* @Create: 2025/11/15 0:03*/
@RequestMapping("/login")
@RestController
public class LoginController {@GetMapping("/{id}")public String queryById(@PathVariable("id") Long id) {return "恭喜您成功进入登录系统~";}
}

  

package com.eg;import org.springframework.web.bind.annotation.*;/*** @Description:* @Author: qiuxie* @Create: 2025/11/12 21:45*/
@RestController
@RequestMapping("/user")
public class UserController {@GetMapping("/{id}")public String queryById(@PathVariable("id") Long id) {return "恭喜您成功进入用户系统~";}}

  

server.port=10011spring.config.import=optional:nacos:${spring.application.name}.propertiesspring.application.name=user-service
spring.cloud.nacos.discovery.server-addr=192.168.31.60:8850
spring.cloud.nacos.discovery.service=${spring.application.name}
spring.cloud.nacos.discovery.namespace=gateway-test
management.endpoints.web.exposure.include=*#nacos配置
#2024.3.1 13:56 add
spring.cloud.nacos.config.server-addr=192.168.31.60:8850
spring.cloud.nacos.config.namespace=gateway-test
spring.cloud.nacos.config.group=DEFAULT_GROUP
spring.cloud.nacos.config.file-extension=properties# 设置Nacos客户端日志级别为DEBUG
logging.level.com.alibaba.nacos=DEBUGlogging.level.com.java=debug
logging.level.com.alibaba.nacos.shaded.io.perfmark=info
logging.level.web=debug

  接下来是order-service服务

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.order</groupId><artifactId>order-service</artifactId><version>1.0-SNAPSHOT</version><properties><java.version>1.8</java.version><skipTests>true</skipTests><springcloud.version>2021.0.5</springcloud.version><alibaba.version>2021.0.5.0</alibaba.version></properties><!-- 继承 Spring Boot 父 POM,管理 Spring Boot 依赖版本 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</version><relativePath/> <!-- 从仓库查找父 POM --></parent><!-- 依赖管理 --><dependencyManagement><dependencies><!--spring cloud依赖管理,引入了Spring Cloud的版本--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${springcloud.version}</version><type>pom</type><scope>import</scope></dependency><!--SCA --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!--SCA --></dependencies></dependencyManagement><dependencies><!-- Spring Boot 核心依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--tomcat容器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Nacos 服务发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies><build><plugins><!-- Spring Boot Maven 插件 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.7.15</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

  

package com.order;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @Description:* @Author: qiuxie* @Create: 2025/11/14 15:32*/
@RestController
@EnableDiscoveryClient
@SpringBootApplication
@RequestMapping("/order")
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class,args);}@GetMapping("/{id}")public String queryById(@PathVariable("id") Long id) {return "恭喜您成功进入订单系统~";}@GetMapping("/")public String get(){return null;}
}

  

server.port=10012spring.config.import=optional:nacos:${spring.application.name}.propertiesspring.application.name=order-service
spring.cloud.nacos.discovery.server-addr=192.168.31.60:8850
spring.cloud.nacos.discovery.service=${spring.application.name}
spring.cloud.nacos.discovery.namespace=gateway-test
management.endpoints.web.exposure.include=*#nacos配置
#2024.3.1 13:56 add
spring.cloud.nacos.config.server-addr=192.168.31.60:8850
spring.cloud.nacos.config.namespace=gateway-test
spring.cloud.nacos.config.group=DEFAULT_GROUP
spring.cloud.nacos.config.file-extension=properties# 设置Nacos客户端日志级别为DEBUG
logging.level.com.alibaba.nacos=DEBUGlogging.level.com.java=debug
logging.level.com.alibaba.nacos.shaded.io.perfmark=info
logging.level.web=debug

  代码完毕,需要注意的gateway并没有rabbin了,所以需要引入loadbalancer

http://www.gsyq.cn/news/49937.html

相关文章:

  • Unlock BOSCH MPC5xx ECU Data with CG FC200 Programmer – Bench Read/Write Tool
  • 基于FPGA的BPSK+costas环实现,包含testbench,高斯信道,误码统计,可设置SNR
  • 每日一句
  • Windows 文件删除命令详解
  • 在ec2上部署deepseekOCR模型
  • 使用DeepSeek润色论文:掌握这些高效指令,精准润色
  • 轨迹方程1
  • Linux增加root权限用户
  • Whistle操作文档
  • 在周五晚上
  • 藤校录取率超93%!2025年美国留学中介TOP5推荐,附专属申请方案
  • 2025年11月宁夏GEO/人工智能搜索优化服务商/厂商/企业最新top5专业推荐:GEO引领智能营销新范式
  • 《Java工程师必看:JVM性能调优的7个核心参数》‌
  • 20232301郑好 实验五 信息搜集技术实践
  • 2025年澳洲留学中介机构推荐榜单:八大名校offer保障/全流程服务/高性价比机构推荐​
  • CF1606F Tree Queries
  • [Python刷题记录]-有效的括号-栈-简单
  • [KaibaMath]1021 关于[0, 1]与[a, b]等势的证明
  • 征程 6X 常见 kernel panic 问题
  • 2025-11-13~14 hetao1733837的刷题记录
  • 2025年11月宁夏数字人服务商/供应商最新专业推荐:AI驱动下的企业数字化转型新引擎
  • [KaibaMath]1020 与海明码有关的最小值问题
  • 不是 DE_aemmprty 的草稿纸
  • 2025年宁夏数字人服务商专业评测:AI驱动下的企业数字化转型新引擎
  • SqlServer资料
  • 收藏项目系列---【大屏模板合集】
  • 11/14
  • 25.11.14
  • 重组融合蛋白技术概述
  • OpenEuler安装宝塔