CSDN Topic Challenge Fase 2
Tema de participación: Notas del estudio
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.
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
Tabla de contenido
1. Fingir reemplaza RestTemplate
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
- Entrar en vigor a nivel mundial
feign:
client:
config:
default:
logger-level: Full
- efecto local
feign:
client:
config:
userservice: # 服务名名称
logger-level: Full
3. Método 2: método de código Java
- 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; // 日志级别为
}
}
- Configuración global
En la clase de inicio, el cielo se anota de la siguiente manera
@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration.class) //全局生效
- 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)
- importar dependencias
<!--HttpClient的依赖-->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
- 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
- Cree un nuevo módulo llamado fingir-api.
- Introducir dependencias fingidas
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
- Mueva los módulos clients, config, pojo al módulo fingir-api.
- 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>
- Modifique la importación relacionada con los tres módulos anteriores en order-service al paquete en fingir-api
- 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.
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)