Spring Retry サーキットブレーカーの構成
Spring Retry は、Spring アプリケーションの宣言型再試行サポートを提供します。プロジェクトのサブセットには、サーキットブレーカー機能を実装する機能が含まれています。Spring Retry は、CircuitBreakerRetryPolicy
(英語) とステートフルリトライの組み合わせにより、サーキットブレーカーの実装を提供します。Spring Retry を使用して作成されたすべてのサーキットブレーカーは、CircuitBreakerRetryPolicy
と DefaultRetryState
[GitHub] (英語) を使用して作成されます。これらのクラスは両方とも、SpringRetryConfigBuilder
を使用して構成できます。
デフォルト構成
すべてのサーキットブレーカーにデフォルト構成を提供するには、SpringRetryCircuitBreakerFactory
が渡される Customizer
Bean を作成します。configureDefault
メソッドを使用して、デフォルト構成を提供できます。
@Bean
public Customizer<SpringRetryCircuitBreakerFactory> defaultCustomizer() {
return factory -> factory.configureDefault(id -> new SpringRetryConfigBuilder(id)
.retryPolicy(new TimeoutRetryPolicy()).build());
}
特定のサーキットブレーカーの構成
デフォルト構成を提供するのと同様に、Customizer
Bean を作成できます。これには、SpringRetryCircuitBreakerFactory
が渡されます。
@Bean
public Customizer<SpringRetryCircuitBreakerFactory> slowCustomizer() {
return factory -> factory.configure(builder -> builder.retryPolicy(new SimpleRetryPolicy(1)).build(), "slow");
}
作成されたサーキットブレーカーの設定に加えて、作成された後、発信者に返される前にサーキットブレーカーをカスタマイズすることもできます。これを行うには、addRetryTemplateCustomizers
メソッドを使用できます。これは、RetryTemplate
にイベントハンドラーを追加する場合に役立ちます。
@Bean
public Customizer<SpringRetryCircuitBreakerFactory> slowCustomizer() {
return factory -> factory.addRetryTemplateCustomizers(retryTemplate -> retryTemplate.registerListener(new RetryListener() {
@Override
public <T, E extends Throwable> boolean open(RetryContext context, RetryCallback<T, E> callback) {
return false;
}
@Override
public <T, E extends Throwable> void close(RetryContext context, RetryCallback<T, E> callback, Throwable throwable) {
}
@Override
public <T, E extends Throwable> void onError(RetryContext context, RetryCallback<T, E> callback, Throwable throwable) {
}
}));
}