最新の安定バージョンについては、Spring Cloud Gateway 4.3.2 を使用してください! |
LoadBalancer フィルター
LoadBalancer フィルターは serviceId パラメーターを受け取ります。LoadBalancerClient はこれを使用して、ルーティング用のインスタンスを選択します。LoadBalancer フィルターは Java DSL で明示的に使用する必要があります。LoadBalancer フィルターを使用する場合は、org.springframework.cloud.gateway.server.mvc.handler.HandlerFunctions で空の http() メソッドを使用します。
RouteConfiguration.java
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> gatewayRouterFunctionsAddReqHeader() {
return route("api_route")
.GET("/api/**", http())
.filter(lb("apiservice"))
.build();
}
}構成での LoadBalancer フィルターの使用
LoadBalancer フィルターは、lb スキーム ( lb://myservice など) の URI を使用して構成で使用できます。Spring Cloud LoadBalancerClient を使用して名前 (この例では myservice ) を実際のホストとポートに解決し、同じホストとポート内の URI を置き換えます。属性。次のリストは、LoadBalancer フィルターを構成します。
application.yml
spring:
cloud:
gateway:
mvc:
routes:
- id: api_route
uri: lb://apiservice
predicates:
- Path=/api/**lb() フィルターを使用する場合は、setPath() や stripPrefix() などのパスを操作するフィルターの後に配置する必要があります。そうしないと、結果の URL が不正確になる可能性があります。構成内の lb: スキームハンドラーは、フィルターを自動的に最優先順序に配置します。 |
デフォルトでは、ReactorLoadBalancer でサービスインスタンスが見つからない場合、503 が返されます。 |
LoadBalancerClient から返された ServiceInstance の isSecure 値は、ゲートウェイに対するリクエストで指定されたスキームをオーバーライドします。例: リクエストが HTTPS 経由でゲートウェイに入ったが、ServiceInstance が安全ではないことを示した場合、ダウンストリームリクエストは HTTP 経由で行われます。逆の状況も当てはまります。 |
| ゲートウェイは、すべての LoadBalancer 機能をサポートします。Spring Cloud Commons ドキュメントでそれらについてさらに読むことができます。 |