Class ConcurrencyThrottleInterceptor

java.lang.Object
org.springframework.util.ConcurrencyThrottleSupport
org.springframework.aop.interceptor.ConcurrencyThrottleInterceptor
All Implemented Interfaces:
Serializable, Advice, Interceptor, MethodInterceptor

public class ConcurrencyThrottleInterceptor extends org.springframework.util.ConcurrencyThrottleSupport implements MethodInterceptor, Serializable
Interceptor that throttles concurrent access, blocking invocations if a specified concurrency limit is reached.

Can be applied to methods of local services that involve heavy use of system resources, in a scenario where it is more efficient to throttle concurrency for a specific service rather than restricting the entire thread pool (e.g. the web container's thread pool).

The default concurrency limit of this interceptor is 1. Specify the "concurrencyLimit" bean property to change this value.

Since:
11.02.2004
Author:
Juergen Hoeller
See Also:
  • Field Summary

    Fields inherited from class org.springframework.util.ConcurrencyThrottleSupport

    logger, NO_CONCURRENCY, UNBOUNDED_CONCURRENCY
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    invoke(MethodInvocation methodInvocation)
    Implement this method to perform extra treatments before and after the invocation.

    Methods inherited from class org.springframework.util.ConcurrencyThrottleSupport

    afterAccess, beforeAccess, getConcurrencyLimit, isThrottleActive, setConcurrencyLimit

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ConcurrencyThrottleInterceptor

      public ConcurrencyThrottleInterceptor()
  • Method Details

    • invoke

      @Nullable public Object invoke(MethodInvocation methodInvocation) throws Throwable
      Description copied from interface: MethodInterceptor
      Implement this method to perform extra treatments before and after the invocation. Polite implementations would certainly like to invoke Joinpoint.proceed().
      Specified by:
      invoke in interface MethodInterceptor
      Parameters:
      methodInvocation - the method invocation joinpoint
      Returns:
      the result of the call to Joinpoint.proceed(); might be intercepted by the interceptor
      Throws:
      Throwable - if the interceptors or the target object throws an exception