Can be overridden to intercept calls to postRestart
.
Can be overridden to intercept calls to postStop
.
Can be overridden to intercept calls to preRestart
.
Can be overridden to intercept calls to preStart
.
INTERNAL API.
Stores the context for this actor, including self, and sender.
Stores the context for this actor, including self, and sender.
It is implicit to support operations such as forward
.
WARNING: Only valid within the Actor itself, so do not close over it and publish it to other threads!
akka.actor.ActorContext is the Scala API. getContext
returns a
akka.actor.UntypedActorContext, which is the Java API of the actor
context.
User overridable callback: By default it calls preStart()
.
User overridable callback: By default it calls preStart()
.
the Throwable that caused the restart to happen Is called right AFTER restart on the newly created Actor to allow reinitialization after an Actor crash.
User overridable callback.
User overridable callback.
Is called asynchronously after 'actor.stop()' is invoked. Empty default implementation.
User overridable callback: By default it disposes of all children and then calls postStop()
.
User overridable callback: By default it disposes of all children and then calls postStop()
.
the Throwable that caused the restart to happen
optionally the current message the actor processed when failing, if applicable Is called on a crashed Actor right BEFORE it is restarted to allow clean up of resources before Actor is terminated.
User overridable callback.
User overridable callback.
Is called when an Actor is started. Actors are automatically started asynchronously when created. Empty default implementation.
This defines the initial actor behavior, it must return a partial function with the actor logic.
This defines the initial actor behavior, it must return a partial function with the actor logic.
The 'self' field holds the ActorRef for this actor.
The 'self' field holds the ActorRef for this actor.
Can be used to send messages to itself:
self ! message
The reference sender Actor of the last received message.
The reference sender Actor of the last received message.
Is defined if the message was sent from another Actor,
else deadLetters
in akka.actor.ActorSystem.
WARNING: Only valid within the Actor itself, so do not close over it and publish it to other threads!
User overridable definition the strategy to use for supervising child actors.
User overridable definition the strategy to use for supervising child actors.
User overridable callback.
User overridable callback.
Is called when a message isn't handled by the current behavior of the actor by default it fails with either a akka.actor.DeathPactException (in case of an unhandled akka.actor.Terminated message) or publishes an akka.actor.UnhandledMessage to the actor's system's akka.event.EventStream
This actor can be used to supervise a child actor and start it again after a back-off duration if the child actor is stopped.
This is useful in situations where the re-start of the child actor should be delayed e.g. in order to give an external resource time to recover before the child actor tries contacting it again (after being restarted).
Specifically this pattern is useful for for persistent actors, which are stopped in case of persistence failures. Just restarting them immediately would probably fail again (since the data store is probably unavailable). It is better to try again after a delay.
It supports exponential back-off between the given
minBackoff
andmaxBackoff
durations. For example, ifminBackoff
is 3 seconds andmaxBackoff
30 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 theminBackoff
duration.In addition to the calculated exponential back-off an additional random delay based the given
randomFactor
is 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.You can retrieve the current child
ActorRef
by sendingBackoffSupervisor.GetCurrentChild
message to this actor and it will reply with akka.pattern.BackoffSupervisor.CurrentChild containing theActorRef
of the current child, if any.The
BackoffSupervisor
forwards all other messages to the child, if it is currently running.The child can stop itself and send a akka.actor.PoisonPill to the parent supervisor if it wants to do an intentional stop.