配置 Spring Retry 斷路器

Spring Retry 為 Spring 應用程式提供了宣告式重試支援。該專案的一個子集包括實現斷路器功能的能力。Spring Retry 透過結合其 CircuitBreakerRetryPolicy有狀態重試 提供斷路器實現。所有使用 Spring Retry 建立的斷路器都將使用 CircuitBreakerRetryPolicyDefaultRetryState 建立。這兩個類都可以使用 SpringRetryConfigBuilder 進行配置。

預設配置

要為所有斷路器提供預設配置,請建立一個 Customizer bean,並將其傳遞給 SpringRetryCircuitBreakerFactoryconfigureDefault 方法可用於提供預設配置。

@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) {

		}
	}));
}
© . This site is unofficial and not affiliated with VMware.