OpenFeign使用步骤

简介: 微服务调用接口+@FeignClient Feign自带负载均衡配置项

接口+注解


微服务调用接口+@FeignClient

Feign自带负载均衡配置项


新建cloud-consumer-feign-order80



假设现在有8001 8002 俩个端口有业务如下:

即查询数据库 的业务处理部分


24c725a4bd1f467c842c1a254d83b5b0.png


pom文件



 version已经交给父工程管理


 <!-- 统一管理jar包版本 -->
    <!-- 统一管理jar包版本 -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <junit.version>4.12</junit.version>
        <log4j.version>1.2.17</log4j.version>
        <lombok.version>1.16.18</lombok.version>
        <mysql.version>8.0.16</mysql.version>
        <druid.version>1.1.16</druid.version>
        <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
    </properties>
<?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">
    <parent>
        <artifactId>mscloud03</artifactId>
        <groupId>com.atguigu.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>cloud-consumer-feign-order80</artifactId>
    <dependencies>
        <!--openfeign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!--eureka client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
        <dependency>
            <groupId>com.atguigu.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--一般基础通用配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>


yml文件



注册中心由 eureka提供在7001 7002端口


server:
  port: 80
eureka:
  client:
    register-with-eureka: false
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/


主启动类(@EnableFeignClients)



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


新建PaymentFeignService接口并新增注解@FeignClient



@Component
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
public interface PaymentFeignService
{
    @GetMapping(value = "/payment/get/{id}")
    CommonResult<Payment> getPaymentById(@PathVariable("id") Long id);
}


@FeignClient(value = "CLOUD-PAYMENT-SERVICE") 括号里面的值就是8001 8002 的服务程序名称


e633dc1bb5bf4415a5fca8b74e5bacfb.png



控制层



@RestController
public class OrderFeignController
{
    @Resource
    private PaymentFeignService paymentFeignService;
    @GetMapping(value = "/consumer/payment/get/{id}")
    public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id)
    {
        return paymentFeignService.getPaymentById(id);
    }
}


测试结果



第一次

b1e950e614a64562b318558a450e24d8.png

第二次:

a25b41c28911424794f8382b014a8c61.png

可以发现已经实现轮询

相关文章
|
8月前
|
Java 关系型数据库 数据库
微服务SpringCloud分布式事务之Seata
SpringCloud+SpringCloudAlibaba的Seata实现分布式事务,步骤超详细,附带视频教程
559 1
vue3 watch 监听多值以及深度监听用法
vue3 watch 监听多值以及深度监听用法
2640 0
|
JSON Java 数据格式
Java jackson 由String转成List和各种对象
时间久了,会忘记具体怎么转,记录一下,后面方便使用
1087 1
|
算法 Linux 数据安全/隐私保护
|
算法 数据可视化 数据挖掘
时间序列模型算法 - ARIMA (一)
时间序列模型算法 - ARIMA (一)
1311 0
|
SQL 存储 安全
浅谈大数据背景下数据库安全保障体系
在大数据背景下,数据库安全保障体系的构建对于有效防范信息安全事件发生具有重要意义。该文首先分析了大 数据背景下数据库系统的安全威胁问题,然后介绍了几种网络安全的新技术,包括身份认证技术、访问控制技术等,最后 阐述了数据库安全保障体系的构建路径,希望为进一步解决大数据背景下的数据库安全问题提供支持。
1385 1
|
安全 前端开发 测试技术
SystemVerilog学习-01-系统验证概述(一)
SystemVerilog学习-01-系统验证概述
475 0
SystemVerilog学习-01-系统验证概述(一)
|
前端开发 JavaScript Java
基于springboot的学生选课系统
该系统创作于2022年3月,基于springboot技术,数据层为MyBatis,mysql数据库,具有完整的业务逻辑,适合选题:高校、学生选课、大学选课、课程等。
基于springboot的学生选课系统
|
JSON 前端开发 测试技术
postman如何通过json数据进行测试
postman如何通过json数据进行测试
postman如何通过json数据进行测试
|
容器
react-Ant Design框架项目中文字轮播与图片轮播的实现
在react-Ant Design框架项目中实现文字轮播和图片轮播,在这里记录一下,实现过程有一点小坑需要注意
760 0
react-Ant Design框架项目中文字轮播与图片轮播的实现