IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 将spring-cloud-alibaba升级到2021.1版本 -> 正文阅读

[Java知识库]将spring-cloud-alibaba升级到2021.1版本

springcloud-alibaba 应用demo,基于https://github.com/rstyro/SpringCloud-Alibaba-learning的例子,将spring-cloud-alibaba升级到2021.1版本,并调试成功。

采用docker 的nacos镜像运行nacos服务, 重点调试了springcloud-nacos-discovery-provider、springcloud-nacos-discovery-consumer、springcloud-shiro和springcloud-nacos-sentinel项目。

一、升级spring-cloud-alibaba升级到2021.1版本

修改pom.xml

   <parent>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba</artifactId>
        <version>2021.1</version>
    </parent>

二、调试springcloud-nacos-discovery-provider项目

首先要先注册服务,向nacos注册服务的名称就是spring.application.name的配置的名称,pom.xml文件注释掉不需要的spring-cloud-starter-zipkin依赖,修改application.xml,重点是nacos的server-addr地址。

spring:
  profiles:
    active: dev
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos

调试时,项目依赖springcloud-shiro的权限控制,可以在application.xml中设置不启用shiro。

shiro:
  enabled: false
  annotations:
    enabled: false

代码中注释掉权限的注解 ? ? @RequiresPermissions("user:list")

测试链接是http://localhost:8810/test/sayHi?name=test,测试成功

如果启用shiro,上述配置false 改为true,测试链接是 http://localhost:8810/test/sayHi?authority=rstyro&name=test。注意authority参数,可选值是rstyro、admin。

三、调试springcloud-nacos-discovery-consumer项目

采用springcloud loadbalancer的负载均衡,因此需禁用ribbon。pom.xml文件修改点如下:

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <!--这里使用了 feign 要排除 ribbon 不然报错-->
            <exclusions>
                <exclusion>
                    <groupId>com.netflix.ribbon</groupId>
                    <artifactId>ribbon</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 增加 spring-cloud loadbalancer 依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
            <version>${spring-cloud-loadbalancer.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
            <version>${spring-cloud-loadbalancer.version}</version>
        </dependency>

application.yml文件配置如下,重点是配置nacos地址和loadbalancer的配置。

spring:
  profiles:
    active: dev
  application:
    name: nacos-consumer
  cloud:
    loadbalancer:
      nacos:          #ribbon
        enabled: true
      ribbon:
        enabled: false    #must set  else then:No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-netflix-ribbon?
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos
        enabled: true
    sentinel:
      enabled: true
      transport:
        port: 8719
        dashboard: localhost:8858

#NamingService 配置属性
nacos:
  server-addr: 127.0.0.1:8848

注意,1)一定要配置 loadbalancer.ribbon.enabled: false 和pom中exclusion? ribbon,否则总是报错,找不到ribbon。

2)使用feign的web服务调用的FeignController,总是报错refuse connect。通过打印日志发现调用的provider发布的服务的地址不正确,即consumer项目没有从nacos正确获得provider的服务的服务ip。具体原因是nacos的服务发现的功能不正常,返回为空。最后重要找到nacos.server-addr的配置属性,NamingService需要此配置链接nacos服务器。估计这是配置文件没统一的缘故。其他相关属性如下:

{accessKey=${nacos.access-key:}, 
clusterName=${nacos.cluster-name:}, 
configLongPollTimeout=${nacos.configLongPollTimeout:}, configRetryTime=${nacos.configRetryTime:}, 
contextPath=${nacos.context-path:}, enableRemoteSyncConfig=${nacos.enableRemoteSyncConfig:}, 
encode=${nacos.encode:UTF-8}, 
endpoint=${nacos.endpoint:}, 
maxRetry=${nacos.maxRetry:}, 
namespace=${nacos.namespace:}, 
password=${nacos.password:}, 
secretKey=${nacos.secret-key:}, 
serverAddr=${nacos.server-addr:}, 
username=${nacos.username:}}

?3、报错 No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer??

FeignController执行不成功。原因是spring-cloud-loadbalancer版本太高,应该是3.0.1.

<spring-cloud-loadbalancer.version>3.0.1</spring-cloud-loadbalancer.version>

四、典型配置参数说明

application.yml

#application.yml配置文件

spring:
  profiles:
    # 对应环境
    active: dev
  application:
    # 服务名
    name: pearl-test
  cloud:
    nacos:
      config:
        # 是否开启配置中心 默认true
        enabled: true
        # 配置中心地址
        server-addr: localhost:8848
        # 当要上阿里云时,阿里云上面的一个云账号名
        access-key: accessKey
        # 当要上阿里云时,阿里云上面的一个云账号密码
        secret-key: secretKey
        # Nacos Server 对外暴露的 context path
        context-path: nacos
        # 读取的配置内容对应的编码 默认UTF-8
        encode: ISO-8859-1
        # 配置文件后缀
        file-extension: yml
        # 配置对应的分组
        group: PEARL_GROUP
        # 命名空间 常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
        namespace: 771d3d1a-374b-47fe-b88b-c53a0b271acf
        # 文件名前缀 默认为 ${spring.appliction.name}
        prefix: prefix
        # 客户端获取配置的超时时间(毫秒) 默认3000
        timeout: 5000
        # 配置成Nacos集群名称
        #cluster-name: clusterName
        # Nacos 认证用户
        username: nacos
        # Nacos 认证密码
        password: 123456
        # 长轮询的重试次数 默认3
        max-retry: 5
        # 长轮询任务重试时间,单位为毫秒
        config-retry-time: 1000
        # 长轮询的超时时间,单位为毫秒
        config-long-poll-timeout: 1000
        # 监听器首次添加时拉取远端配置 默认false
        enable-remote-sync-config: true
        # 地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址
        #endpoint: localhost
        # 是否开启监听和自动刷新
        refresh-enabled: true
        # 支持多个共享 Data Id 的配置,优先级小于extension-configs,自定义 Data Id 配置 属性是个集合,内部由 Config POJO 组成。Config 有 3 个属性,分别是 dataId, group 以及 refresh
        shared-configs[0]:
          data-id: pearl-common.yml
          group: DEV_GROUP   # 默认为DEFAULT_GROUP
          refresh: true   # 是否动态刷新,默认为false
        shared-configs[1]:
          data-id: pearl-test.yml
          group: DEV_GROUP
          refresh: true
        # 支持多个扩展 Data Id 的配置 ,优先级小于prefix+dev.yaml
        # extension-configs:

feign config属性

feign:
  client:
    config:
      defalut: # feign请求默认配置
        connectTimeout: 2000
        readTimeout: 3000
      fiegnName: # fiegnName服务请求的配置,优先defalut配置。
        connectTimeout: 5000 # 链接超时时间
        readTimeout: 5000  # 请求
        loggerLevel: full   # 日志级别
        errorDecoder: com.example.SimpleErrorDecoder #异常处理
        retryer: com.example.SimpleRetryer # 重试策略
        defaultQueryParameters: # 默认参数条件
          query: queryValue
        defaultRequestHeaders:  # 默认默认header
          header: headerValue
        requestInterceptors:    # 默认拦截器
          - com.example.FooRequestInterceptor
          - com.example.BarRequestInterceptor
        decode404: false   #404响应 true-直接返回,false-抛出异常       
        encoder: com.example.SimpleEncoder  #传输编码
        decoder: com.example.SimpleDecoder  #传输解码
        contract: com.example.SimpleContract #传输协议

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-06-08 18:52:54  更:2022-06-08 18:53:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:23:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码