Class SupervisorStrategy
- Direct Known Subclasses:
BackoffSupervisorStrategy,RestartSupervisorStrategy
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic classstatic interfaceINTERNAL APIstatic classstatic class -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract booleanabstract org.slf4j.event.LevellogLevel()static RestartSupervisorStrategyrestart()Restart immediately without any limit on number of restart retries.static BackoffSupervisorStrategyrestartWithBackoff(Duration minBackoff, Duration maxBackoff, double randomFactor) Java API: It supports exponential back-off between the givenminBackoffandmaxBackoffdurations.static BackoffSupervisorStrategyrestartWithBackoff(scala.concurrent.duration.FiniteDuration minBackoff, scala.concurrent.duration.FiniteDuration maxBackoff, double randomFactor) Scala API: It supports exponential back-off between the givenminBackoffandmaxBackoffdurations.static SupervisorStrategyresume()Resume means keeping the same state as before the exception was thrown and is thus less safe thanrestart.static SupervisorStrategystop()Stop the actorabstract SupervisorStrategywithLoggingEnabled(boolean enabled) abstract SupervisorStrategywithLogLevel(org.slf4j.event.Level level)
-
Constructor Details
-
SupervisorStrategy
public SupervisorStrategy()
-
-
Method Details
-
resume
Resume means keeping the same state as before the exception was thrown and is thus less safe thanrestart.If the actor behavior is deferred and throws an exception on startup the actor is stopped (restarting would be dangerous as it could lead to an infinite restart-loop)
-
restart
Restart immediately without any limit on number of restart retries. A limit can be added withRestartSupervisorStrategy.withLimit.If the actor behavior is deferred and throws an exception on startup the actor is stopped (restarting would be dangerous as it could lead to an infinite restart-loop)
-
stop
Stop the actor -
restartWithBackoff
public static BackoffSupervisorStrategy restartWithBackoff(scala.concurrent.duration.FiniteDuration minBackoff, scala.concurrent.duration.FiniteDuration maxBackoff, double randomFactor) Scala API: It supports exponential back-off between the givenminBackoffandmaxBackoffdurations. For example, ifminBackoffis 3 seconds andmaxBackoff30 seconds the start attempts will be delayed with 3, 6, 12, 24, 30, 30 seconds. The exponential back-off counter is reset if the actor is not terminated within theminBackoffduration.In addition to the calculated exponential back-off an additional random delay based the given
randomFactoris added, e.g. 0.2 adds up to 20% delay. The reason for adding a random delay is to avoid that all failing actors hit the backend resource at the same time.During the back-off incoming messages are dropped.
If no new exception occurs within
(minBackoff + maxBackoff) / 2the exponentially increased back-off timeout is reset. This can be overridden by explicitly settingresetBackoffAfterusingwithResetBackoffAfteron the returned strategy.The strategy is applied also if the actor behavior is deferred and throws an exception during startup.
A maximum number of restarts can be specified with
BackoffSupervisorStrategy.withMaxRestarts(int)- Parameters:
minBackoff- minimum (initial) duration until the child actor will started again, if it is terminatedmaxBackoff- the exponential back-off is capped to this durationrandomFactor- after calculation of the exponential back-off an additional random delay based on this factor is added, e.g.0.2adds up to20%delay. In order to skip this additional delay pass in0.
-
restartWithBackoff
public static BackoffSupervisorStrategy restartWithBackoff(Duration minBackoff, Duration maxBackoff, double randomFactor) Java API: It supports exponential back-off between the givenminBackoffandmaxBackoffdurations. For example, ifminBackoffis 3 seconds andmaxBackoff30 seconds the start attempts will be delayed with 3, 6, 12, 24, 30, 30 seconds. The exponential back-off counter is reset if the actor is not terminated within theminBackoffduration.In addition to the calculated exponential back-off an additional random delay based the given
randomFactoris added, e.g. 0.2 adds up to 20% delay. The reason for adding a random delay is to avoid that all failing actors hit the backend resource at the same time.During the back-off incoming messages are dropped.
If no new exception occurs within
(minBackoff + maxBackoff) / 2the exponentially increased back-off timeout is reset. This can be overridden by explicitly settingresetBackoffAfterusingwithResetBackoffAfteron the returned strategy.The strategy is applied also if the actor behavior is deferred and throws an exception during startup.
- Parameters:
minBackoff- minimum (initial) duration until the child actor will started again, if it is terminatedmaxBackoff- the exponential back-off is capped to this durationrandomFactor- after calculation of the exponential back-off an additional random delay based on this factor is added, e.g.0.2adds up to20%delay. In order to skip this additional delay pass in0.
-
loggingEnabled
public abstract boolean loggingEnabled() -
logLevel
public abstract org.slf4j.event.Level logLevel() -
withLoggingEnabled
-
withLogLevel
-