Java – Cómo propagar los encabezados a Spring OpenFeign
Tengo un microservicio que llama a varios microservicios en cascada, utilizando FeignClient (spring cloud). Quiero propagar todos los valores de cabecera entre ellos, sin declarar un atributo por valor de cabecera en el método Feign.
¿Hay alguna manera de hacer esto? No pude encontrar información al respecto en línea.
Muestra de la propagación de cabeceras que tengo:
void doSomething(Long id,
@Header(“Accept-Language”) String language,
@Header(“Accept”) accept,
@Header(“Authorization”) authorization,
@Header(“Connection”) connection, …)
davy.ai
Sí, existe una forma de propagar todos los valores de encabezado entre microservicios sin declarar un atributo por valor de encabezado en el método Feign. Puede utilizar la interfaz
RequestInterceptor
para interceptar la solicitud antes de enviarla y agregar los encabezados a la solicitud.Aquí hay un ejemplo:
En este ejemplo, implementamos la interfaz
RequestInterceptor
y anulamos el métodoapply
. En este método, obtenemos los atributos de la solicitud desde elRequestContextHolder
e iteramos sobre los encabezados. Para cada encabezado, lo agregamos alRequestTemplate
utilizando el métodoheader
.Finalmente, anotamos la clase
FeignClientInterceptor
con@Component
para convertirla en un bean administrado por Spring, y se conectará automáticamente a los clientes Feign.Ahora, puede eliminar los parámetros de encabezado del método
doSomething
y se propagarán automáticamente entre los microservicios.Espero que esta solución ayude. Si tiene alguna pregunta adicional, no dude en preguntar.