SpringCloud - Fingir llamada remota 2

CSDN Topic Challenge Fase 2
Tema de participación: Notas del estudio

Por favor agregue la descripción de la imagen
Tarjeta de visita personal:

bloguero: Alcohólicos ᝰ.
Perfil personal: Disfrute del vino y luche por un futuro con una bebida.
Este artículo es inspirador: Tres personas caminan, ahí debe estar mi maestro.

Por favor agregue la descripción de la imagen
Este proyecto se basa en el programador dark horse de la estación B Java "SpringCloud Microservice Technology Stack", SpringCloud+RabbitMQ+Docker+Redis+search+distributed

[SpringCloud+RabbitMQ+Docker+Redis+search+distributed, sistema detallado curso de pila de tecnología de microservicios springcloud|programador de caballos oscuros Java microservicio] Haga clic para ver

1. Fingir reemplaza RestTemplate

Click para ver

2. Configuración de registro

1. Nivel de registro

NINGUNO: Sin registro
BÁSICO: Método de solicitud, URL, código de estado de respuesta y tiempo de ejecución
ENCABEZADOS: Método de solicitud, URL, código de estado de respuesta y tiempo de ejecución y encabezado de solicitud y encabezado de respuesta
COMPLETO: Encabezado de registro, cuerpo y metadatos de solicitud y respuesta, casi toda la informacion

2. Método 1: método del archivo de configuración

  1. Entrar en vigor a nivel mundial
feign:
  client:
    config:
      default:
        logger-level: Full
  1. efecto local
feign:
  client:
    config:
      userservice: # 服务名名称
        logger-level: Full

3. Método 2: método de código Java

  1. Cree una configuración de módulo de configuración, en la que se crea la clase DefaultFeignConfiguration
package cn.itcast.order.config;

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

public class DefaultFeignConfiguration  {
    
    
    @Bean
    public Logger.Level feignLogLevel(){
    
    
        return Logger.Level.FULL; // 日志级别为
    }
}


  1. Configuración global

En la clase de inicio, el cielo se anota de la siguiente manera

@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration.class) //全局生效
  1. configuración local

Agregue la siguiente anotación a la clase de controlador, donde el valor es el nombre del servicio.

@FeignClient(value = "userservicec" , configuration = DefaultFeignConfiguration.class) // 局部生效

3. Optimización del rendimiento

Método : use el grupo de conexiones (aquí usando Apache HttpClient)

  1. importar dependencias
<!--HttpClient的依赖-->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
</dependency>
  1. Configurar el grupo de conexiones (application.yml)
feign:
  httpclient:
    enabled: true
    max-connections: 200
    max-connections-per-route: 50

Recomendación: use básico o ninguno para el nivel de registro

4. Mejores prácticas

1. Herencia

Para aquellos con alto acoplamiento de código, defina una interfaz principal unificada y herede esta interfaz.

2. Extracción

1. Pasos

Extraiga FeignCLient como un módulo separado

  1. Cree un nuevo módulo llamado fingir-api.
  2. Introducir dependencias fingidas
<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
</dependencies>
  1. Mueva los módulos clients, config, pojo al módulo fingir-api.

imagen.png

  1. Importar la dependencia de fingir-api en el servicio de pedidos
 <!--feign-api依赖-->
<dependency>
  <groupId>cn.itcast.demo</groupId>
  <artifactId>feign-api</artifactId>
  <version>1.0</version>
</dependency>
  1. Modifique la importación relacionada con los tres módulos anteriores en order-service al paquete en fingir-api
  2. reiniciar prueba

2. Excepción

La siguiente excepción ocurre al reiniciar:
El campo userClient en cn.itcast.order.service.OrderService requería un bean de tipo 'cn.itcast.feign.clients.UserClient' que no se pudo encontrar.

imagen.png

Razón:
FeignClients no está dentro del alcance de la clase de inicio @SpringBootApplication para escanear el paquete
Solución:
Método 1: especifique el paquete donde se encuentra FeignClients

@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration.class, basePackages = "cn.itcast.feign.clients") //全局生效

Método 2: especificar el código de bytes de FeignClients

@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration.class, clients = UserClient.class)

Supongo que te gusta

Origin blog.csdn.net/m0_65144570/article/details/127138958
Recomendado
Clasificación