SpringCloud 系列实战 | 第五篇: 服务消费者整合(Feign)进行远程调用服务基本用法(SpringBoot)(2.X版本)

SpringCloud 系列实战 | 第五篇: 服务消费者整合(Feign)进行远程调用服务基本用法(SpringBoot)(2.X版本)

一、Feign简介
Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。

  • Feign 采用的是基于接口的注解;
    1.1 添加pom依赖
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

1.2 启动类添加注解扫描路径

@EnableFeignClients(basePackages = {"com.customer.feign"})

1.3 创建FeignConfiguration类 打印查看Fegin的请求日志过程信息

package com.customer.configuration;

import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FeignConfiguration {
    /**
     * 日志level有4个级别
     * 1.NONE,不记录任何日志
     * 2.BASIC,仅记录请求方法、URL以及响应状态码和执行时间:
     *   ---> GET http://PROVIDER-SERVER/getTest HTTP/1.1
     *   <--- HTTP/1.1 200 (7ms)
     * 3.HEADRES,除了BASIC以外的还会记录请求和响应的头信息
     * 4.FULL,所有
     * @return
     */
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.BASIC;
    }
}

1.4 Controller编写Feign测试代码

@RestController
public class TestController {
    @Value("${server.port}")
    private String port;
    @Autowired
    private TestFeign testFeign;

    @GetMapping(value = "getTest")
    public String getTest(){
        String test = testFeign.getTest();
        System.out.println("getTest-feign消费者调用提供者返回数据:"+test);
        return test;
    }

1.5 创建Feign接口和代码

@FeignClient(value = "PROVIDER-SERVER",configuration = FeignConfiguration.class, fallbackFactory = TestFeignFallback.class)
public interface TestFeign {
    @GetMapping(value = "/getTest")
    String getTest();
}

1.6 创建FeignFallbackFactory类(Feign调用失败走此类方法)

package com.customer.feign;

import feign.hystrix.FallbackFactory;

@Component
public class TestFeignFallback implements FallbackFactory<TestFeign> {
    @Override
    public TestFeign create(Throwable throwable) {
        return new TestFeign() {
            @Override
            public String getTest() {
                return "调用失败:" + throwable.getMessage();
            }
        };
    }
}

1.7 配置文件开启Feign日志

#开启Feign日志
logging.level.com.customer.feign.* = DEBUG

1.8 启动Eureka注册中心服务 8900、PROVIDER-SERVER提供者服务 8901、CUSTOMER-SERVER消费者服务 8902
访问Eureka注册中心服务地址:http://localhost:8900

在这里插入图片描述
1.9 浏览器访问消费者服务接口 http://localhost:8902/getTest
查看浏览器返回结果 和 控制台信息

在这里插入图片描述在这里插入图片描述浏览器和控制台均显示返回成功,Feign调用远程服务成功。

二、Feign的4种日志级别格式 进行逐一测试

@Configuration
public class FeignConfiguration {
    /**
     * 日志level有4个级别
     * 1.NONE,不记录任何日志
     * 2.BASIC,仅记录请求方法、URL以及响应状态码和执行时间:
     * 3.HEADRES,除了BASIC以外的还会记录请求和响应的头信息
     * 4.FULL,所有
     */
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.BASIC;
    }
}

2.1 第一种 NONE 不记录任何日志在这里插入图片描述
2.2 第二种 BASIC 仅记录请求方法、URL以及响应状态码和执行时间
在这里插入图片描述
2.3 第三种 HEADRES,除了BASIC以外的还会记录请求和响应的头信息
在这里插入图片描述
2.4 第四种 FULL 所有
在这里插入图片描述
2.5 此时服务消费者整合(Feign)进行远程调用服务就完成了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值