Configuración de proyecto Spring Cloud con Feign
Feign es una herramienta de cliente HTTP declarativo que permite definir fácilmente lllamadas a servicios RESTful. En esta guía se muestra cómo integrar Feign en una aplicación Spring Cloud para consumir servicios registrados en Eureka.
Dependencias necesarias
En el archivo pom.xml se deben incluir las dependencias principales para habilitar Feign y el descubrimiento de servicios:
<dependencies>
<dependency>
<groupid>org.springframework.cloud</groupid>
<artifactid>spring-cloud-starter-netflix-eureka-client</artifactid>
</dependency>
<dependency>
<groupid>org.springframework.cloud</groupid>
<artifactid>spring-cloud-starter-openfeign</artifactid>
</dependency>
</dependencies>
Clase principal de arranque
La clase principal debe incluir la anotación @EnableFeignClients para activar el soporte de Feign:
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class FeignClientApplication {
public static void main(String[] args) {
SpringApplication.run(FeignClientApplication.class, args);
}
}
Definición del cliente Feign
Se crea una interfaz para definir cómo se consumirá el servicio REST:
@FeignClient(name = "greeting-service")
public interface GreetingClient {
@GetMapping("/api/greet")
String getGreeting();
}
Controlador para exponer el servicio
Un controlador REST puede inyectar el cliente Feign y exponerlo como un endpoint:
@RestController
@RequestMapping("/consume")
public class GreetingController {
private final GreetingClient greetingClient;
public GreetingController(GreetingClient greetingClient) {
this.greetingClient = greetingClient;
}
@GetMapping("/message")
public String fetchGreeting() {
return greetingClient.getGreeting();
}
}
Configuración del cliente
En el archivo application.yml se pueden definir ajustes relacionados con Feign, Ribbon y compresión:
spring:
application:
name: feign-consumer
cloud:
openfeign:
client:
config:
default:
connectTimeout: 5000
readTimeout: 10000
feign:
client:
config:
logging:
level: full
compression:
request:
enabled: true
mime-types: text/xml,application/xml,application/json
min-request-size: 2048
response:
enabled: true
greeting-service:
ribbon:
listOfServers:
- http://localhost:8081
- http://localhost:8082
Configuración avanzada
Se pueden aplicar configuraciones específicas para ajustar el comportamiento de Feign:
- Configuración de timeouts y reintentos en Ribbon
- Ajuste de compresión para optimizar el tráfico
- Configuración de niveles de log para depuración