Class RateLimiterRequestHandlerAdvice
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.handler.advice.AbstractRequestHandlerAdvice
org.springframework.integration.handler.advice.RateLimiterRequestHandlerAdvice
- All Implemented Interfaces:
- Advice,- Interceptor,- MethodInterceptor,- Aware,- BeanFactoryAware,- BeanNameAware,- InitializingBean,- ApplicationContextAware,- ComponentSourceAware,- ExpressionCapable,- NamedComponent
An 
AbstractRequestHandlerAdvice extension for a rate limiting to service method calls.
 The implementation is based on the
 Resilience4j.- Since:
- 5.2
- Author:
- Artem Bilan, Gary Russell
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionstatic classAMessagingExceptionwrapper for theRequestNotPermittedwith therequestMessageandtargetcontext.Nested classes/interfaces inherited from class org.springframework.integration.handler.advice.AbstractRequestHandlerAdviceAbstractRequestHandlerAdvice.ExecutionCallback, AbstractRequestHandlerAdvice.ThrowableHolderException
- 
Field SummaryFieldsFields inherited from class org.springframework.integration.context.IntegrationObjectSupportEXPRESSION_PARSER, logger
- 
Constructor SummaryConstructorsConstructorDescriptionConstruct an instance based on default rate limiter options and "RateLimiterRequestHandlerAdvice" as a rate limiter name.RateLimiterRequestHandlerAdvice(io.github.resilience4j.ratelimiter.RateLimiter rateLimiter) Construct an instance based on the providedRateLimiter.RateLimiterRequestHandlerAdvice(io.github.resilience4j.ratelimiter.RateLimiterConfig rateLimiterConfig) Construct an instance based on the providedRateLimiterConfigand "RateLimiterRequestHandlerAdvice" as a rate limiter name.RateLimiterRequestHandlerAdvice(io.github.resilience4j.ratelimiter.RateLimiterConfig rateLimiterConfig, String name) Construct an instance based on the providedRateLimiterConfigand name.Construct an instance based on default rate limiter options and provided name.
- 
Method SummaryModifier and TypeMethodDescriptionprotected ObjectdoInvoke(AbstractRequestHandlerAdvice.ExecutionCallback callback, Object target, Message<?> message) Subclasses implement this method to apply behavior to theMessageHandler.io.github.resilience4j.ratelimiter.RateLimiter.MetricsObtain the metrics from the rate limiter.io.github.resilience4j.ratelimiter.RateLimiterGet theRateLimiterwhich is configured for this advice.voidsetLimitForPeriod(int limitForPeriod) Change thelimitForPeriodoption of therateLimiter.voidsetTimeoutDuration(Duration timeoutDuration) Change thetimeoutDurationoption of therateLimiter.Methods inherited from class org.springframework.integration.handler.advice.AbstractRequestHandlerAdviceinvoke, unwrapExceptionIfNecessary, unwrapThrowableIfNecessaryMethods inherited from class org.springframework.integration.context.IntegrationObjectSupportafterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentDescription, getComponentName, getComponentSource, getComponentType, getConversionService, getExpression, getIntegrationProperties, getMessageBuilderFactory, getTaskScheduler, isInitialized, onInit, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentDescription, setComponentName, setComponentSource, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString
- 
Field Details- 
DEFAULT_NAME- See Also:
 
 
- 
- 
Constructor Details- 
RateLimiterRequestHandlerAdvicepublic RateLimiterRequestHandlerAdvice()Construct an instance based on default rate limiter options and "RateLimiterRequestHandlerAdvice" as a rate limiter name.- See Also:
- 
- RateLimiter.ofDefaults(java.lang.String)
 
 
- 
RateLimiterRequestHandlerAdviceConstruct an instance based on default rate limiter options and provided name.- Parameters:
- name- the name for the rate limiter.
 
- 
RateLimiterRequestHandlerAdvicepublic RateLimiterRequestHandlerAdvice(io.github.resilience4j.ratelimiter.RateLimiter rateLimiter) Construct an instance based on the providedRateLimiter.- Parameters:
- rateLimiter- the- RateLimiterto use.
 
- 
RateLimiterRequestHandlerAdvicepublic RateLimiterRequestHandlerAdvice(io.github.resilience4j.ratelimiter.RateLimiterConfig rateLimiterConfig) Construct an instance based on the providedRateLimiterConfigand "RateLimiterRequestHandlerAdvice" as a rate limiter name.- Parameters:
- rateLimiterConfig- the- RateLimiterConfigto use.
 
- 
RateLimiterRequestHandlerAdvicepublic RateLimiterRequestHandlerAdvice(io.github.resilience4j.ratelimiter.RateLimiterConfig rateLimiterConfig, String name) Construct an instance based on the providedRateLimiterConfigand name.- Parameters:
- rateLimiterConfig- the- RateLimiterConfigto use.
- name- the name for the rate limiter.
 
 
- 
- 
Method Details- 
setLimitForPeriodpublic void setLimitForPeriod(int limitForPeriod) Change thelimitForPeriodoption of therateLimiter.- Parameters:
- limitForPeriod- the- limitForPeriodto use.
- See Also:
- 
- RateLimiter.changeLimitForPeriod(int)
 
 
- 
setTimeoutDurationChange thetimeoutDurationoption of therateLimiter.- Parameters:
- timeoutDuration- the- timeoutDurationto use.
- See Also:
- 
- RateLimiter.changeTimeoutDuration(Duration)
 
 
- 
getMetricspublic io.github.resilience4j.ratelimiter.RateLimiter.Metrics getMetrics()Obtain the metrics from the rate limiter.- Returns:
- the RateLimiter.Metricsfrom rate limiter.
- See Also:
- 
- RateLimiter.getMetrics()
 
 
- 
getRateLimiterpublic io.github.resilience4j.ratelimiter.RateLimiter getRateLimiter()Get theRateLimiterwhich is configured for this advice.- Returns:
- the RateLimiterfor this advice.
 
- 
doInvokeprotected Object doInvoke(AbstractRequestHandlerAdvice.ExecutionCallback callback, Object target, Message<?> message) Description copied from class:AbstractRequestHandlerAdviceSubclasses implement this method to apply behavior to theMessageHandler.callback.execute() invokes the handler method and returns its result, or null. - Specified by:
- doInvokein class- AbstractRequestHandlerAdvice
- Parameters:
- callback- Subclasses invoke the execute() method on this interface to invoke the handler method.
- target- The target handler.
- message- The message that will be sent to the handler.
- Returns:
- the result after invoking the MessageHandler.
 
 
-