[SpringCloud-4] Fingir llamada

En el estudio anterior, es problemático llamar a otro servicio utilizando RestTemplate y encapsulando la URL por sí mismo. Es relativamente simple usar fingir y se puede hacer con una anotación. En realidad, es un cliente de servicio http ligero y también tiene capacidades de equilibrio de carga y disyuntores: Fingir = RestTemplate+Ribbon+Hystrix

El uso básico de fingir:

1. Importar dependencias en servicios de consumo

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

2. La clase de inicio usa la anotación @EnableFeignClients

Nota: En este momento, elimine la anotación de soporte @EnableCircuitBreaker para el disyuntor Hystrix para incluir las dependencias importadas, porque Feign las importará automáticamente.

3. Crear interfaz de simulación

// @FeignClient表明当前类是一个Feign客户端,value指定该客户端要请求的服务名称(登记到注册中心上的服务提供者的服务名称)
@FeignClient(value = "lagou-service-resume")
@RequestMapping("/resume")
public interface ResumeServiceFeignClient {


    // Feign要做的事情就是,拼装url发起请求
    // 我们调用该方法就是调用本地接口方法,那么实际上做的是远程请求
    @GetMapping("/openstate/{userId}")
    public Integer findDefaultResumeState(@PathVariable("userId") Long userId);

}

Como arriba, la url se especifica en forma de springmvc, lo cual es muy conveniente. Especifique el servicio y la interfaz para llamar, y luego use la inyección @Autowire cuando lo use. 

soporte de fingir para balanceo de carga: 

Fingir tiene dependencias de cinta integradas y configuración automática, por lo que no necesitamos introducir dependencias adicionales y podemos configurarlas a través de ribbon.xx (es decir, el método de configuración de cinta que aprendimos antes). Además, cuando simula llamadas, puede especificar el tiempo de espera de la interfaz (predeterminado 1 s), pero si usa la configuración de la cinta, la cinta prevalecerá.

 

Soporte de Fingir para fusibles: 

Para el soporte de la fusión de hystrix, no es necesario introducir las dependencias por separado, solo es necesario habilitar el soporte en el archivo de configuración:

# 开启Feign的熔断功能
feign:
  hystrix:
    enabled: true

Se pueden utilizar otros de la misma forma que antes de hystrix. Vale la pena señalar que la simulación en sí tiene una configuración de tiempo de espera. Si el tiempo de espera del fusible hystrix se configura en este momento, prevalecerá el tiempo más pequeño y se ingresará al mecanismo del fusible después de que se exceda el tiempo. Como dije antes, el método de degradación se puede especificar después de que se rompa el fusible, y la interfaz de fingir también se puede especificar aquí:

1. Defina la clase de procesamiento de reserva:

/**
 * 降级回退逻辑需要定义一个类,实现FeignClient接口,实现接口中的方法
 *
 *
 */
@Component  // 别忘了这个注解,还应该被扫描到
public class ResumeFallback implements ResumeServiceFeignClient {
    @Override
    public Integer findDefaultResumeState(Long userId) {
        return -6;
    }
}

Implemente directamente la interfaz de fingir y reescriba toda la lógica del método original.

2. Especificar en la interfaz fingir

@FeignClient(value = "lagou-service-resume",fallback = ResumeFallback.class,path = "/resume")
//@RequestMapping("/resume")
public interface ResumeServiceFeignClient {


    // Feign要做的事情就是,拼装url发起请求
    // 我们调用该方法就是调用本地接口方法,那么实际上做的是远程请求
    @GetMapping("/openstate/{userId}")
    public Integer findDefaultResumeState(@PathVariable("userId") Long userId);

}

Como arriba, simplemente especifique el atributo alternativo en la anotación FeignClient. Vale la pena señalar que después de usar el respaldo, @RequestMapping("/resume") debe comentarse y el prefijo /resume debe colocarse en el atributo de ruta de FeignClient; de lo contrario, se puede informar un error.

El soporte de Fingir para la compresión: 

Cuando se llama a fingir, puede haber situaciones en las que el cuerpo de la solicitud o la respuesta sea demasiado grande. Fingir puede admitir la compresión y puede configurar directamente el valor para abrirlo:

feign:
  compression:
    request:
      enabled: true # 开启请求压缩
      mime-types: text/html,application/xml,application/json # 设置压缩的数据类型,此处也是默认值
      min-request-size: 2048 # 设置触发压缩的⼤⼩下限,此处也是默认值
    response:
      enabled: true # 开启响应压缩

Nivel de registro de Fingir:  

Fingir es un cliente de solicitud http , similar a nuestro navegador, puede imprimir información de registro más detallada (encabezado de respuesta, código de estado, etc.) al solicitar y recibir respuestas. Si queremos ver el registro cuando solicita Feign, podemos configurarlo.Por defecto, el registro de Feign no está habilitado.

// Feign的⽇志级别(Feign请求过程信息)
// NONE:默认的,不显示任何⽇志----性能最好
// BASIC:仅记录请求⽅法、URL、响应状态码以及执⾏时间----⽣产问题追踪
// HEADERS:在BASIC级别的基础上,记录请求和响应的header
// FULL:记录请求和响应的header、body和元数据----适⽤于开发及测试环境定位问题
@Configuration
public class FeignConfig {
    @Bean
    Logger.Level feignLevel() {
        return Logger.Level.FULL;
     }
}

También puede modificar el nivel de registro para una interfaz fingida:

logging:
   level:
# Feign⽇志只会对⽇志级别为debug的做出响应
 com.lagou.edu.controller.service.ResumeServiceFeignClient:debug

Supongo que te gusta

Origin blog.csdn.net/growing_duck/article/details/131213579
Recomendado
Clasificación