nl.grons.sentries.core

CircuitBreakerSentry

class CircuitBreakerSentry extends ChainableSentry

A sentry that limits the number of consecutive failures; a.k.a. a circuit breaker. A new instance can be obtained through the nl.grons.sentries.SentrySupport mixin.

The goal of a circuit breaker is to protect the caller from a resource that fails. It also protects the resource from overload when it is trying to recover. A circuit breaker works by keeping track of the number of consecutive failures. When there are more then consecutive failLimit failures, the circuit breaker 'breaks' and pro-actively blocks all following calls by throwing a nl.grons.sentries.core.CircuitBreakerBrokenException.

Every retryDelay one invocation is allowed through in order to test the resource. When this call succeeds, the circuit breaker goes back to the flow state. If not, it stays in the broken state.

Please see http://day-to-day-stuff.blogspot.com/2013/02/breaking-circuit-breaker.html for a rationale of the used vocabulary (broken/flow state vs. the more known open/half open/close state).

Linear Supertypes
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. CircuitBreakerSentry
  2. ChainableSentry
  3. NamedSentry
  4. Sentry
  5. AnyRef
  6. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Instance Constructors

  1. new CircuitBreakerSentry(owner: Class[_], resourceName: String, failLimit: Int, retryDelay: FiniteDuration)

Value Members

  1. final def !=(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  4. def andThen(s: Sentry): Sentry

    Composes two instances of Sentry in a new Sentry, with this sentries context applied first.

    Composes two instances of Sentry in a new Sentry, with this sentries context applied first.

    returns

    a new sentry t such that t(x) == s(this(x))

    Definition Classes
    Sentry
  5. def apply[T](r: ⇒ T): T

    Run the given code block in the context of this sentry, and return its value.

    Run the given code block in the context of this sentry, and return its value.

    Definition Classes
    CircuitBreakerSentrySentry
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def attemptResetBrokenState(currentState: BrokenState): Boolean

    Try to restart the broken state.

    Try to restart the broken state.

    currentState

    the expected current state

    returns

    true when the state was changed, false when the given state was not the current state

  8. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  9. def compose(s: Sentry): Sentry

    Composes two instances of Sentry in a new Sentry, with this sentries context applied last.

    Composes two instances of Sentry in a new Sentry, with this sentries context applied last.

    returns

    a new sentry t such that t(x) == this(s(x))

    Definition Classes
    Sentry
  10. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  11. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  12. val failLimit: Int

  13. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  14. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  15. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  16. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  17. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  18. final def notify(): Unit

    Definition Classes
    AnyRef
  19. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  20. def reset(): Unit

    Switch to flow state.

    Switch to flow state.

    Definition Classes
    CircuitBreakerSentrySentry
  21. val resourceName: String

    returns

    a string describing the resource that is protected, e.g. "mysql:server-b.com:3336". It is used in exceptions and visible through JMX.

    Definition Classes
    CircuitBreakerSentryNamedSentry
  22. val retryDelay: FiniteDuration

  23. val sentryType: String

    returns

    a simple describing identifier that is unique per sentry chain, e.g. "rateLimit". ResourceName plus sentryType uniquely name each sentry. The sentry registry enforces this. The sentryType is also used in JMX to uniquely name bean properties for a resource. null for sentry wrappers, that must not be registered.

    Definition Classes
    CircuitBreakerSentryChainableSentry
  24. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  25. def toString(): String

    Definition Classes
    AnyRef → Any
  26. def trip(): Unit

    Switch to broken state.

  27. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  28. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  29. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from ChainableSentry

Inherited from NamedSentry

Inherited from Sentry

Inherited from AnyRef

Inherited from Any

Ungrouped