跳到主要内容
版本:5.0.1

FallbackHeaders 过滤器

DeepSeek V3 中英对照 FallbackHeaders Filter FallbackHeaders Filter

FallbackHeaders 工厂允许您在转发到外部应用程序中 fallbackUri 的请求头中添加 Spring Cloud CircuitBreaker 执行异常详情,如下场景所示:

spring:
cloud:
gateway:
server:
webmvc:
routes:
- id: ingredients
uri: lb://ingredients
predicates:
- Path=/ingredients/**
filters:
- name: CircuitBreaker
args:
name: fetchIngredients
fallbackUri: forward:/fallback
- id: ingredients-fallback
uri: http://localhost:9994
predicates:
- Path=/fallback
filters:
- name: FallbackHeaders
args:
executionExceptionTypeHeaderName: Test-Header
import static org.springframework.cloud.gateway.server.mvc.filter.BeforeFilterFunctions.fallbackHeaders;
import static org.springframework.cloud.gateway.server.mvc.filter.BeforeFilterFunctions.uri;
import static org.springframework.cloud.gateway.server.mvc.filter.CircuitBreakerFilterFunctions.circuitBreaker;
import static org.springframework.cloud.gateway.server.mvc.filter.LoadBalancerFilterFunctions.lb;
import static org.springframework.cloud.gateway.server.mvc.handler.GatewayRouterFunctions.route;
import static org.springframework.cloud.gateway.server.mvc.handler.HandlerFunctions.http;

@Configuration
class RouteConfiguration {

@Bean
public RouterFunction<ServerResponse> gatewayRouterFunctionsCircuitBreakerFallbackToGatewayRoute() {
return route("ingredients")
.route(path("/ingredients/**"), http())
.filter(lb("ingredients"))
.filter(circuitBreaker("fetchIngredients", URI.create("forward:/fallback")))
.build()
.and(route("ingredients-fallback")
.route(path("/fallback"), http())
.before(uri("http://localhost:9994"))
.before(fallbackHeaders())
.build());
}
}

在这个例子中,当断路器运行时发生执行异常后,请求会被转发到运行在 localhost:9994 上的应用程序中的 fallback 端点或处理器。FallbackHeaders 过滤器会向该请求添加包含异常类型、异常消息以及(如果可用)根本原因异常类型和消息的头部信息。

您可以通过设置以下参数的值(显示为默认值)来覆盖配置中的标题名称:

  • executionExceptionTypeHeaderName ("Execution-Exception-Type")

  • executionExceptionMessageHeaderName ("Execution-Exception-Message")

  • rootCauseExceptionTypeHeaderName ("Root-Cause-Exception-Type")

  • rootCauseExceptionMessageHeaderName ("Root-Cause-Exception-Message")

有关断路器和网关的更多信息,请参阅 Spring Cloud CircuitBreaker Filter 部分。