9.2.1 使用 Spring Cloud Circuit Breaker 介绍断路器

要在 Spring Cloud Gateway 中使用 Spring Cloud Circuit Breaker,你需要添加所需实现的依赖。在本例中,我们将使用 Resilience4J 响应式版本。继续在 Edge Service 项目(edge-service)的 build.gradle 文件中添加新依赖。记住在添加后刷新或重新导入 Gradle 依赖。

代码清单 9.6 添加 Spring Cloud Circuit Breaker 依赖

dependencies {
 // ... 其他依赖
 implementation 'org.springframework.cloud:spring-cloud-starter-circuitbreaker-reactor-resilience4j'
}

Spring Cloud Gateway 中的 CircuitBreaker 过滤器依赖 Spring Cloud Circuit Breaker 来包装路由。与 Retry 过滤器一样,你可以选择将其应用于特定路由或定义为默认过滤器。让我们选择第一个选项。你还可以指定一个可选的 fallback URI,在电路处于打开状态时处理请求。在这个示例(application.yml)中,两个路由都将配置 CircuitBreaker 过滤器,但只有 catalog-route 会有 fallbackUri 值,这样我可以向你展示两种场景。

代码清单 9.7 为网关路由配置断路器

spring:
 cloud:
 gateway:
 routes:
 - id: catalog-route
 uri: ${CATALOG_SERVICE_URL:http://localhost:9001}/books
 predicates:
 - Path=/books/**
 filters:
 - name: CircuitBreaker # 过滤器名称
 args:
 name: catalogCircuitBreaker # 断路器名称
 fallbackUri: forward:/catalog-fallback # 电路打开时转发到此 URI

 - id: order-route
 uri: ${ORDER_SERVICE_URL:http://localhost:9002}/orders
 predicates:
 - Path=/orders/**
 filters:
 - name: CircuitBreaker
 args:
 name: orderCircuitBreaker # 此断路器未定义回退

下一步是配置断路器。

results matching ""

    No results matching ""