diff --git a/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationService.java b/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationService.java index 840869d5e..e21fd1ceb 100644 --- a/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationService.java +++ b/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationService.java @@ -919,6 +919,8 @@ public static final class Builder @Nullable private TimeLimiterConfiguration timeLimiterConfiguration = null; @Nullable + private CircuitBreakerConfiguration circuitBreakerConfiguration = null; + @Nullable private String providerTenantId; /** @@ -938,6 +940,23 @@ public Builder withTimeLimiterConfiguration( @Nonnull final TimeLimiterConfigura return this; } + /** + * Create instance applying the given circuit breaker when retrieving destinations. + * + * @param circuitBreakerConfiguration + * The circuit-breaker configuration to be applied for the request. Use + * {@code TimeLimiterConfiguration.disabled()} to diable the circuit-breaker. + * @return The builder itself. + * @since 5.25.0 + */ + @Nonnull + public Builder withCircuitBreakerConfiguration( + @Nonnull final CircuitBreakerConfiguration circuitBreakerConfiguration ) + { + this.circuitBreakerConfiguration = circuitBreakerConfiguration; + return this; + } + @Nonnull Builder withProviderTenant( @Nonnull final Tenant providerTenant ) { @@ -956,10 +975,12 @@ public DestinationService build() { final TimeLimiterConfiguration timeLimiter = timeLimiterConfiguration != null ? timeLimiterConfiguration : DEFAULT_TIME_LIMITER; + final CircuitBreakerConfiguration circuitBreaker = + circuitBreakerConfiguration != null ? circuitBreakerConfiguration : DEFAULT_SINGLE_DEST_CIRCUIT_BREAKER; return new DestinationService( new DestinationServiceAdapter(null, null, providerTenantId), - createResilienceConfiguration("singleDestResilience", timeLimiter, DEFAULT_SINGLE_DEST_CIRCUIT_BREAKER), - createResilienceConfiguration("allDestResilience", timeLimiter, DEFAULT_ALL_DEST_CIRCUIT_BREAKER)); + createResilienceConfiguration("singleDestResilience", timeLimiter, circuitBreaker), + createResilienceConfiguration("allDestResilience", timeLimiter, circuitBreaker)); } } }