Cliente declarativo con Feign en Spring Cloud

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

Etiquetas: spring-cloud Feign eureka REST Ribbon

Publicado el 10-19 04:51