spring boot 2.4.2 适配nacos实现注册中心与负载均衡

kotlin 1.3的版本已经被最新的idea标记为弃用。在单独打开一个分模块工程,居然给我看这个

Kotlin: Language version 1.3 is no longer supported; please, use version 1.4

最后只能这样临时解决
kotlin版本过低解决方法
如果在2.3.7提升kotlin版本,会收到kotlin/collections/MapsKt的错误。应该是1.4删掉会移动了一个类。
生版本是一个很好的选择。
spring cloud alibaba 官方的版本推荐
虽然很早就标注了2.4.2和spring cloud2020.0.1的支持,但是在阿里自身的初始化项目网站,如果选了2.4.2,nacos直接的灰了。
于是,我们需要了解版本差异。

最终我们需要适配的版本

	<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>11</java.version>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <spring.cloud-version>2020.0.1</spring.cloud-version>
        <spring.boot-version>2.4.2</spring.boot-version>
        <spring.cloud-alibaba-version>2021.1</spring.cloud-alibaba-version>
        <kotlin.version>1.4.31</kotlin.version>
    </properties>

解决方法:

一 、 重新引入bootstrap的支持
2.4.2弃用了bootstrap,允许可以重新引入

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

配置上稍微发生了一点变化是spring-application-name配置服务名称的需要改为

spring:
  cloud:
    nacos:
      discovery:
        service: appname

二、弃用ribbon 引入loadbalancer
2.4.2弃用了ribbon采用了loadbalancer,如果你直接调nacos的负载均衡,它会告诉你找不到。

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>        

loadbalancer 依然适用之前的@LoadBalanced的注解。

@Configuration
public class WebClientConfig {

    @LoadBalanced
    @Bean
    public WebClient.Builder clientBuilder() {
        return WebClient.builder();
    }
}

但是个人推荐使用

    @Autowired
    private LoadBalancedExchangeFilterFunction lbFunction;

使用时根据内外网初始化

WebClient.builder().filter(lbFunction).build()
WebClient.create()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值