Merge pull request #239 from ryanjbaxter/add-circuitbreakerretrypolicy-api
Add CircuitBreakerRetryPolicy API
This commit is contained in:
@@ -70,6 +70,16 @@ public class SpringRetryConfigBuilder implements ConfigBuilder<SpringRetryConfig
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the {@link CircuitBreakerRetryPolicy} to use.
|
||||
* @param retryPolicy The {@code CircuitBreakerRetryPolicy} to use.
|
||||
* @return The builder.
|
||||
*/
|
||||
public SpringRetryConfigBuilder retryPolicy(CircuitBreakerRetryPolicy retryPolicy) {
|
||||
this.retryPolicy = retryPolicy;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Forces a refresh on the {@link DefaultRetryState} object.
|
||||
* @param refresh true to refresh, false otherwise.
|
||||
|
||||
@@ -33,8 +33,8 @@ import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.retry.RetryCallback;
|
||||
import org.springframework.retry.RetryContext;
|
||||
import org.springframework.retry.RetryListener;
|
||||
import org.springframework.retry.policy.CircuitBreakerRetryPolicy;
|
||||
import org.springframework.retry.policy.SimpleRetryPolicy;
|
||||
import org.springframework.retry.policy.TimeoutRetryPolicy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@@ -90,27 +90,30 @@ class SpringRetryCircuitBreakerIntegrationTest {
|
||||
@Bean
|
||||
Customizer<SpringRetryCircuitBreakerFactory> factoryCustomizer() {
|
||||
return factory -> {
|
||||
CircuitBreakerRetryPolicy circuitBreakerRetryPolicy = new CircuitBreakerRetryPolicy(new SimpleRetryPolicy(2));
|
||||
circuitBreakerRetryPolicy.setOpenTimeout(1000);
|
||||
circuitBreakerRetryPolicy.setResetTimeout(1000);
|
||||
factory.configureDefault(
|
||||
id -> new SpringRetryConfigBuilder(id).retryPolicy(new TimeoutRetryPolicy()).build());
|
||||
id -> new SpringRetryConfigBuilder(id).retryPolicy(circuitBreakerRetryPolicy).build());
|
||||
factory.configure(builder -> builder.retryPolicy(new SimpleRetryPolicy(1)).build(), "slow");
|
||||
factory
|
||||
.addRetryTemplateCustomizers(retryTemplate -> retryTemplate.registerListener(new RetryListener() {
|
||||
|
||||
@Override
|
||||
public <T, E extends Throwable> boolean open(RetryContext context,
|
||||
RetryCallback<T, E> callback) {
|
||||
RetryCallback<T, E> callback) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, E extends Throwable> void close(RetryContext context, RetryCallback<T, E> callback,
|
||||
Throwable throwable) {
|
||||
Throwable throwable) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, E extends Throwable> void onError(RetryContext context, RetryCallback<T, E> callback,
|
||||
Throwable throwable) {
|
||||
Throwable throwable) {
|
||||
|
||||
}
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user