springcloud——Feign组件

目录

概述

入门案例

1.在消费端微服务导入Feign依赖

2.为需要调用的服务创建接口,在接口中添加注解和路径。Feign通过动态代理生成这个接口的实现类,调用远程服务返回结果。

3.在消费端启动上添加@EnableFeignClients,开启Feign功能。

Feign负载均衡

Feign服务降级

案例——feign使用hystrix

1.创建一个失败信息处理类继承入门案例中定义的接口,实现方法返回需要返回的错误信息,在类中添加@Component注解,将类交给Spring管理

2.在接口名上声明错误信息返回类@FeignClient(value = "springcloud-server",fallback = ClientFallBack.class)

请求压缩

日志设置

案例——日志设置


概述

Feign可以将对其他微服务的访问进行封装,通过注解使用服务路劲进行访问,不用自己拼接。

入门案例

1.在消费端微服务导入Feign依赖

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

2.为需要调用的服务创建接口,在接口中添加注解和路径。Feign通过动态代理生成这个接口的实现类,调用远程服务返回结果。

@FeignClient("springcloud-server")//调用服务的名称
public interface Userserver {

    @GetMapping("/testserver/{id}")//路径
    User getUser(@PathVariable("id") Integer id);//调用的方法与需要调用的服务中的返回类型和传入参数一致,方法名可以不一样
}

3.在消费端启动上添加@EnableFeignClients,开启Feign功能。

Feign负载均衡

Feign集成了Ribbon组件,在客户端springboot配置文件中配置,Feign自动实现负载均衡

Feign服务降级

feign集成了Hystrix,在消费服务中配置feign.hystrix.enabled= true,开启feign使用hystrix。

案例——feign使用hystrix

1.创建一个失败信息处理类继承入门案例中定义的接口,实现方法返回需要返回的错误信息,在类中添加@Component注解,将类交给Spring管理

package com.example.util;

import com.example.pojo.User;
import com.example.server.Userserver;
import org.springframework.stereotype.Component;

/**
 * @program: mylearncode
 * @description:
 * @author: yuan long
 * @create: 2020-12-17 17:05
 */
@Component
public class ClientFallBack implements Userserver {

    @Override
    public User getUser(Integer id) {
        User user=new User();
        user.setAge(200);
        user.setName("网络拥挤");
        return user;
    }
}

2.在接口名上声明错误信息返回类@FeignClient(value = "springcloud-server",fallback = ClientFallBack.class)

package com.example.server;

import com.example.pojo.User;
import com.example.util.ClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * @program: mylearncode
 * @description:
 * @author: yuan long
 * @create: 2020-12-17 16:16
 */
@FeignClient(value = "springcloud-server",fallback = ClientFallBack.class)
public interface Userserver {

    @GetMapping("/testserver/{id}")
    User getUser(@PathVariable("id") Integer id);
}

请求压缩

feign提供对请求和响应进行压缩的功能。在yml文件中开启请求或响应压缩,压缩类似于通常文件压缩,可以减小传输中传输内容的大小,从而减轻网络压力。压缩功能开启配置如下:

feign:  
  compression:
    request:
      enabled: true
    response:
      enabled: true

日志设置

feign在实现我们定义的接口会生成新的代理对象,使用feign中的日志对象Fegin.Logger处理日志,我们定义的logger无法对其产生作用,因此我们需要在feign中定义日志级别和日志输出的类型。

案例——日志设置

1.创建一个配置类

package com.example.util;

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

/**
 * @program: mylearncode
 * @description:
 * @author: yuan long
 * @create: 2020-12-17 17:24
 */
@Configuration //声明配置类
public class FeignConfig {
    @Bean
    Logger.Level feignLoggerLevel(){
        /*  NONE:不记录任何日志信息,这是默认值。
        BASIC:仅记录请求的方法,URL以及响应状态码和执行时间
        HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息
        FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。*/
        return Logger.Level.FULL;
    }
}

2.在Feign会生成代理对象的接口注解FeignClient(value = "springcloud-server",fallback = ClientFallBack.class)中添加@configuration = FeignConfig.class

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值