gateway动态路由nacos配置中心路由配置spring-cloud-alibaba 解决nacos config配置不生效问题

目前升级使用以下的版本。

apply plugin: 'io.spring.dependency-management'

dependencyManagement {
    imports {
        mavenBom 'org.springframework.boot:spring-boot-dependencies:2.3.8.RELEASE'
        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Hoxton.SR10'
        mavenBom 'com.alibaba.cloud:spring-cloud-alibaba-dependencies:2.2.5.RELEASE'
    }
}

以下内容引用:https://blog.csdn.net/weixin_39052568/article/details/106497898

发现nacos版本问题
使用 sping cloud alibaba 2.2.1和spirng cloud Hoxton.SR4发现版本不兼容,nacos 修改配置文件是可以收到修改消息但不将修改后信息注入spirng, 也就是说修改不生效,其实启动的时候就不能注入。将 sping cloud alibaba版本将至2.1.1.RELEASE就正常了。
以下是我的相关的jar 包信息

 Hoxton.SR4
2.1.1.RELEASE


           
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
           
           
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
           
       
        #nacos注册中心和配置中心jar包
       
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
       
       
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
       
        # gateway网管jar包
         
            org.springframework.cloud
            spring-cloud-starter-gateway
       
        #这边主要又来测试动态配置是否生效
       
            org.springframework.boot
            spring-boot-starter-actuator
            ${spring.boot.version}
       

配置动态的路由
在项目的resources目录创建bootstrap.yml或bootstrap.properties文件,记住必须是bootstrap文件名,因为只有bootstrap文件在springboot引导时前就会加载,application里写这些配置文件无法生效,因为之前discovery配置信息放入application配置文件中就没有问题,到了config就死活不成。
以下为bootstrap.yml文件

spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        namespace: dev
      discovery:
        server-addr: 127.0.0.1:8848

application.yml

server:
  port: 8103
spring:
  application:
    name: gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
#配置这一项可以监控gateway各个节点的信息
management:
  endpoints:
    web:
      exposure:
        include: gateway

在不设置不设置dataid情况下 nacos系统的具体dataid的设置网上很多,我这里就不说了
到这里所有的代码端的配置基本结束了,nacos的安装我这里也不说了,网上很丰富,我这里用docker简单部署了一个
下面开始测试:

properties的路由配置:


spring.cloud.gateway.routes[0].id=service-user
spring.cloud.gateway.routes[0].uri=lb://service-user
spring.cloud.gateway.routes[0].predicates[0]=Path=/user/**
spring.cloud.gateway.routes[1].id=service-goods
spring.cloud.gateway.routes[1].uri=lb://service-goods
spring.cloud.gateway.routes[1].predicates[0]=Path=/goods/**

yaml的路由配置:

spring:
  cloud:
    gateway:
      discovery:
        locator:
          # 是否与服务注册于发现组件进行结合,通过 serviceId 转发到具体的服务实例
          enabled: true
          lowerCaseServiceId: true   
      routes:
        - id: service-user
          predicates:
            - Path=/user/**
          uri: lb://service-user
        - id: service-goods
          predicates:
            - Path=/goods/**
          uri: lb://service-goods

我自己写了两个节点做测试,spring.cloud.gateway.routes[0].id=service-user这一项是代表注册到nacos里的服务名称如下图

在这里插入图片描述

spring.cloud.gateway.routes[0].uri=lb://service-user 这一项固定写法 lb://服务名 ,当然你愿意也可以写固定连接,predicates是断言没什么好说,还有一项order我没添,默认是0

启动类代码很简单没什么说的

@EnableDiscoveryClient
@SpringBootApplication
public class KflGatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(KflGatewayApplication.class, args);
    }
}


访问http://127.0.0.1:8103/actuator/gateway/routes

在这里插入图片描述

这里看出动态路由已经生效。

访问我的两个测试节点

在这里插入图片描述

 在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木鱼-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值