Class ReactiveCircuitBreakerAdapterDecorator
java.lang.Object
org.springframework.web.service.invoker.HttpExchangeAdapterDecorator
org.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
org.springframework.cloud.client.circuitbreaker.httpservice.ReactiveCircuitBreakerAdapterDecorator
- All Implemented Interfaces:
org.springframework.web.service.invoker.HttpExchangeAdapter, org.springframework.web.service.invoker.ReactorHttpExchangeAdapter
public class ReactiveCircuitBreakerAdapterDecorator
extends org.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
Reactive implementation of
HttpExchangeAdapterDecorator that wraps
@HttpExchange
In the event of a CircuitBreaker fallback, this class uses the user-provided fallback class to create a proxy. The fallback method is selected by matching either:
- A method with the same name and argument types as the original method, or
- A method with the same name and the original arguments preceded by a
Throwable, allowing the user to access the cause of failure within the fallback.
- Since:
- 5.0.0
- Author:
- Olga Maciaszek-Sharma
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionReactiveCircuitBreakerAdapterDecorator(org.springframework.web.service.invoker.ReactorHttpExchangeAdapter delegate, ReactiveCircuitBreaker reactiveCircuitBreaker, CircuitBreaker circuitBreaker, Map<String, Class<?>> fallbackClasses) -
Method Summary
Modifier and TypeMethodDescriptionvoidexchange(org.springframework.web.service.invoker.HttpRequestValues requestValues) org.springframework.http.ResponseEntity<Void> exchangeForBodilessEntity(org.springframework.web.service.invoker.HttpRequestValues values) reactor.core.publisher.Mono<org.springframework.http.ResponseEntity<Void>> exchangeForBodilessEntityMono(org.springframework.web.service.invoker.HttpRequestValues requestValues) <T> @Nullable TexchangeForBody(org.springframework.web.service.invoker.HttpRequestValues values, org.springframework.core.ParameterizedTypeReference<T> bodyType) <T> reactor.core.publisher.Flux<T> exchangeForBodyFlux(org.springframework.web.service.invoker.HttpRequestValues requestValues, org.springframework.core.ParameterizedTypeReference<T> bodyType) <T> reactor.core.publisher.Mono<T> exchangeForBodyMono(org.springframework.web.service.invoker.HttpRequestValues requestValues, org.springframework.core.ParameterizedTypeReference<T> bodyType) <T> org.springframework.http.ResponseEntity<T> exchangeForEntity(org.springframework.web.service.invoker.HttpRequestValues values, org.springframework.core.ParameterizedTypeReference<T> bodyType) <T> reactor.core.publisher.Mono<org.springframework.http.ResponseEntity<reactor.core.publisher.Flux<T>>> exchangeForEntityFlux(org.springframework.web.service.invoker.HttpRequestValues requestValues, org.springframework.core.ParameterizedTypeReference<T> bodyType) <T> reactor.core.publisher.Mono<org.springframework.http.ResponseEntity<T>> exchangeForEntityMono(org.springframework.web.service.invoker.HttpRequestValues requestValues, org.springframework.core.ParameterizedTypeReference<T> bodyType) org.springframework.http.HttpHeadersexchangeForHeaders(org.springframework.web.service.invoker.HttpRequestValues values) reactor.core.publisher.Mono<org.springframework.http.HttpHeaders> exchangeForHeadersMono(org.springframework.web.service.invoker.HttpRequestValues requestValues) reactor.core.publisher.Mono<Void> exchangeForMono(org.springframework.web.service.invoker.HttpRequestValues requestValues) Methods inherited from class org.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
getBlockTimeout, getHttpExchangeAdapter, getReactiveAdapterRegistry, supportsRequestAttributes
-
Constructor Details
-
ReactiveCircuitBreakerAdapterDecorator
public ReactiveCircuitBreakerAdapterDecorator(org.springframework.web.service.invoker.ReactorHttpExchangeAdapter delegate, ReactiveCircuitBreaker reactiveCircuitBreaker, CircuitBreaker circuitBreaker, Map<String, Class<?>> fallbackClasses)
-
-
Method Details
-
exchange
public void exchange(org.springframework.web.service.invoker.HttpRequestValues requestValues) - Specified by:
exchangein interfaceorg.springframework.web.service.invoker.HttpExchangeAdapter- Overrides:
exchangein classorg.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
-
exchangeForHeaders
public org.springframework.http.HttpHeaders exchangeForHeaders(org.springframework.web.service.invoker.HttpRequestValues values) - Specified by:
exchangeForHeadersin interfaceorg.springframework.web.service.invoker.HttpExchangeAdapter- Overrides:
exchangeForHeadersin classorg.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
-
exchangeForBody
public <T> @Nullable T exchangeForBody(org.springframework.web.service.invoker.HttpRequestValues values, org.springframework.core.ParameterizedTypeReference<T> bodyType) - Specified by:
exchangeForBodyin interfaceorg.springframework.web.service.invoker.HttpExchangeAdapter- Overrides:
exchangeForBodyin classorg.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
-
exchangeForBodilessEntity
public org.springframework.http.ResponseEntity<Void> exchangeForBodilessEntity(org.springframework.web.service.invoker.HttpRequestValues values) - Specified by:
exchangeForBodilessEntityin interfaceorg.springframework.web.service.invoker.HttpExchangeAdapter- Overrides:
exchangeForBodilessEntityin classorg.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
-
exchangeForEntity
public <T> org.springframework.http.ResponseEntity<T> exchangeForEntity(org.springframework.web.service.invoker.HttpRequestValues values, org.springframework.core.ParameterizedTypeReference<T> bodyType) - Specified by:
exchangeForEntityin interfaceorg.springframework.web.service.invoker.HttpExchangeAdapter- Overrides:
exchangeForEntityin classorg.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
-
exchangeForMono
public reactor.core.publisher.Mono<Void> exchangeForMono(org.springframework.web.service.invoker.HttpRequestValues requestValues) - Specified by:
exchangeForMonoin interfaceorg.springframework.web.service.invoker.ReactorHttpExchangeAdapter- Overrides:
exchangeForMonoin classorg.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
-
exchangeForHeadersMono
public reactor.core.publisher.Mono<org.springframework.http.HttpHeaders> exchangeForHeadersMono(org.springframework.web.service.invoker.HttpRequestValues requestValues) - Specified by:
exchangeForHeadersMonoin interfaceorg.springframework.web.service.invoker.ReactorHttpExchangeAdapter- Overrides:
exchangeForHeadersMonoin classorg.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
-
exchangeForBodyMono
public <T> reactor.core.publisher.Mono<T> exchangeForBodyMono(org.springframework.web.service.invoker.HttpRequestValues requestValues, org.springframework.core.ParameterizedTypeReference<T> bodyType) - Specified by:
exchangeForBodyMonoin interfaceorg.springframework.web.service.invoker.ReactorHttpExchangeAdapter- Overrides:
exchangeForBodyMonoin classorg.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
-
exchangeForBodyFlux
public <T> reactor.core.publisher.Flux<T> exchangeForBodyFlux(org.springframework.web.service.invoker.HttpRequestValues requestValues, org.springframework.core.ParameterizedTypeReference<T> bodyType) - Specified by:
exchangeForBodyFluxin interfaceorg.springframework.web.service.invoker.ReactorHttpExchangeAdapter- Overrides:
exchangeForBodyFluxin classorg.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
-
exchangeForBodilessEntityMono
public reactor.core.publisher.Mono<org.springframework.http.ResponseEntity<Void>> exchangeForBodilessEntityMono(org.springframework.web.service.invoker.HttpRequestValues requestValues) - Specified by:
exchangeForBodilessEntityMonoin interfaceorg.springframework.web.service.invoker.ReactorHttpExchangeAdapter- Overrides:
exchangeForBodilessEntityMonoin classorg.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
-
exchangeForEntityMono
public <T> reactor.core.publisher.Mono<org.springframework.http.ResponseEntity<T>> exchangeForEntityMono(org.springframework.web.service.invoker.HttpRequestValues requestValues, org.springframework.core.ParameterizedTypeReference<T> bodyType) - Specified by:
exchangeForEntityMonoin interfaceorg.springframework.web.service.invoker.ReactorHttpExchangeAdapter- Overrides:
exchangeForEntityMonoin classorg.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
-
exchangeForEntityFlux
public <T> reactor.core.publisher.Mono<org.springframework.http.ResponseEntity<reactor.core.publisher.Flux<T>>> exchangeForEntityFlux(org.springframework.web.service.invoker.HttpRequestValues requestValues, org.springframework.core.ParameterizedTypeReference<T> bodyType) - Specified by:
exchangeForEntityFluxin interfaceorg.springframework.web.service.invoker.ReactorHttpExchangeAdapter- Overrides:
exchangeForEntityFluxin classorg.springframework.web.service.invoker.ReactorHttpExchangeAdapterDecorator
-