Spring Cloud Circuit Breaker 3.1.2

導入

Spring Cloud サーキットブレーカーは、さまざまなサーキットブレーカーの実装にわたって抽象化を提供します。開発者は、アプリケーションで使用する一貫した API を提供するため、開発者はアプリケーションのニーズに最適なサーキットブレーカーの実装を選択できます。

サポートされている実装

コアコンセプト

コードにサーキットブレーカーを作成するには、CircuitBreakerFactory API を使用できます。クラスパスに Spring Cloud Circuit Breaker スターターを含めると、この API を実装する Bean が自動的に作成されます。この API を使用する非常に簡単な例を以下に示します

@Service
public static class DemoControllerService {
	private RestTemplate rest;
	private CircuitBreakerFactory cbFactory;

	public DemoControllerService(RestTemplate rest, CircuitBreakerFactory cbFactory) {
		this.rest = rest;
		this.cbFactory = cbFactory;
	}

	public String slow() {
		return cbFactory.create("slow").run(() -> rest.getForObject("/slow", String.class), throwable -> "fallback");
	}

}

CircuitBreakerFactory.create API は、CircuitBreaker というクラスのインスタンスを作成します。run メソッドは、Supplier と Function を取ります。Supplier は、サーキットブレーカーでラップするコードです。Function は、サーキットブレーカーが作動した場合に実行されるフォールバックです。関数には、フォールバックがトリガーされる Throwable が渡されます。フォールバックを提供しない場合は、オプションでフォールバックを除外できます。

リアクティブコードのサーキットブレーカー

プロジェクト Reactor がクラスパスにある場合、リアクティブコードに ReactiveCircuitBreakerFactory を使用することもできます。

@Service
public static class DemoControllerService {
	private ReactiveCircuitBreakerFactory cbFactory;
	private WebClient webClient;


	public DemoControllerService(WebClient webClient, ReactiveCircuitBreakerFactory cbFactory) {
		this.webClient = webClient;
		this.cbFactory = cbFactory;
	}

	public Mono<String> slow() {
		return webClient.get().uri("/slow").retrieve().bodyToMono(String.class).transform(
		it -> cbFactory.create("slow").run(it, throwable -> return Mono.just("fallback")));
	}
}

ReactiveCircuitBreakerFactory.create API は、ReactiveCircuitBreaker というクラスのインスタンスを作成します。run メソッドは、Mono または Flux を使用して、サーキットブレーカーでラップします。オプションで、サーキットブレーカーが作動した場合に呼び出され、障害の原因となった Throwable に渡されるフォールバック Function をプロファイルできます。

Spring Boot 構成

次のスターターが Spring Cloud BOM で使用可能です

  • Resilience4J - org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j

  • リアクティブ Resilience4J - org.springframework.cloud:spring-cloud-starter-circuitbreaker-reactor-resilience4j

  • Spring Retry - org.springframework.cloud:spring-cloud-starter-circuitbreaker-spring-retry

Spring Initializr

プロジェクトのクイックスタート

サポートの取得

Tanzu Spring は、1 つのシンプルなサブスクリプションで OpenJDK ™、Spring、Apache Tomcat ® のサポートとバイナリを提供します。

さらに学習したい方に (英語)

今後のイベント

Spring コミュニティで今後開催されるすべてのイベントをチェックしてください。

すべて表示 (英語)