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

02-OpenFeign-微服务接入

1、依赖

由于是spring cloud项目,注意spring-boot、cloud、alibaba的版本兼容性

1.1、父级依赖

<properties>
    <java.version>1.8</java.version>

    <spring-boot.version>2.7.18</spring-boot.version>
    <spring.cloud.version>2021.0.1</spring.cloud.version>
    <spring.cloud.alibaba.version>2021.0.1.0</spring.cloud.alibaba.version>
</properties>



<dependencyManagement>
    <dependencies>
        <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>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring.cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <!-- SpringBoot 依赖配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>         
   </dependencies>
</dependencyManagement>
   

1.2、子服务依赖

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>



<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

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

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

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

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

</dependencies>

以下全部为调用方配置

2、配置项

启动项配置文件 需要在 bootstrap.yml添加如下内容:

server:
  port: 8090
  servlet:
    context-path: /
spring:
  application:
    #nacos 注册时的服务名  
    name: open
  profiles:
    active: seata
  cloud:
    nacos:
      discovery:
        # nacos的服务地址,nacos-server中IP地址:端口号
        server-addr: 192.168.20.113:8848
        # 保持与下游服务一样的域
        namespace: cedb1f46-d9ae-43b1-99db-39b245152543
        group: DEFAULT_GROUP

openfeign的负载均衡策略:

- round-robin:轮询

- least-conne¢tion:最小连接数

- consistent-hashing:一致性HASH

或指定URL

@FeignClient(url = "127.0.0.1:9001",name = "async-feign",contextId = "identity")

2.2、添加注解@EnableFeignClients开启openFeign功能

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

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

2.3、新建openFeign接口

value作为调用方服务名,可以用final static 常量代替

// 下游服务注册到nacos的服务名
@FeignClient(value = "user-service")
public interface OpenFeignUserService {
    
    // 完整的调用地址,如果下游存在/contextPath 则需要补充
    @GetMapping("/user/save")
    String insert() ;
}

3、调用错误问题

1、503[Load balancer does not contain an instance for the service ...]

因为SpringCloud Feign在Hoxton.M2 RELEASED版本之后抛弃了Ribbon,

使用了spring-cloud-loadbalancer,所以我们这里还需要引入spring-cloud-loadbalancer的依赖,否则就会报错


http://www.kler.cn/a/231099.html

相关文章:

  • 麒麟信安连续两年获评信创工委会“卓越贡献成员单位”荣誉称号
  • Android开发--实时监测系统+部署故障诊断算法
  • 基于YOLOv8的暗光低光环境下(ExDark数据集)检测,加入多种优化方式---DCNv4结合SPPF ,助力自动驾驶(一)
  • 【C语言】三子棋游戏实现代码
  • 【翻译】 Processing的安卓项目构建(译者用的是Android Studio)
  • 蓝桥杯(Web大学组)2022国赛真题:新鲜的蔬菜
  • 使用Python构建简单的任务调度器
  • 83 CTF夺旗-Python考点SSTI反序列化字符串
  • 【从0上手Cornerstone3D】如何使用CornerstoneTools中的工具之工具介绍
  • 网易腾讯面试题精选----90道设计模式面试题及答案
  • C++面向对象编程:explicit关键字
  • seatunnel数据集成(一)简介与安装
  • 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距
  • Linux安装Java
  • ppi rust开发 python调用
  • MySQL查询缓存
  • ArcGIS的UTM与高斯-克吕格投影分带要点总结
  • C#(C Sharp)学习笔记_If条件判断语句【五】
  • 【华为 ICT HCIA eNSP 习题汇总】——题目集13
  • 04、全文检索 -- Solr -- 管理 Solr 的 core(使用命令和图形界面创建、删除 core,以及对core 目录下的各文件进行详细介绍)