Class AbstractBehavior<T>
- java.lang.Object
-
- akka.actor.typed.Behavior<T>
-
- akka.actor.typed.ExtensibleBehavior<T>
-
- akka.actor.typed.scaladsl.AbstractBehavior<T>
-
- Direct Known Subclasses:
InitialGroupRouterImpl
,PoolRouterImpl
public abstract class AbstractBehavior<T> extends ExtensibleBehavior<T>
An actorBehavior
can be implemented by extending this class and implement the abstract methodonMessage(T)
and optionally overrideonSignal()
. Mutable state can be defined as instance variables of the class.This is an Object-oriented style of defining a
Behavior
. A more functional style alternative is provided by the factory methods inBehaviors
, for exampleBehaviors.receiveMessage
.Instances of this behavior should be created via
Behaviors.setup
and theActorContext
should be passed as a constructor parameter from the factory function. This is important because a new instance should be created when restart supervision is used.When switching
Behavior
to anotherAbstractBehavior
the originalActorContext
can be used as thecontext
parameter instead of wrapping in a newBehaviors.setup
, but it wouldn't be wrong to usecontext
fromBehaviors.setup
since that is the sameActorContext
instance.It must not be created with an
ActorContext
of another actor, such as the parent actor. Such mistake will be detected at runtime and throwIllegalStateException
when the first message is received.- See Also:
Behaviors.setup
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class akka.actor.typed.Behavior
Behavior.BehaviorDecorators<Inner>, Behavior.BehaviorDecorators$
-
-
Constructor Summary
Constructors Constructor Description AbstractBehavior(ActorContext<T> context)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected ActorContext<T>
context()
abstract Behavior<T>
onMessage(T msg)
Implement this method to process an incoming message and return the next behavior.scala.PartialFunction<Signal,Behavior<T>>
onSignal()
Override this method to process an incomingSignal
and return the next behavior.Behavior<T>
receive(TypedActorContext<T> ctx, T msg)
Process an incoming message and return the next behavior.Behavior<T>
receiveSignal(TypedActorContext<T> ctx, Signal msg)
Process an incomingSignal
and return the next behavior.-
Methods inherited from class akka.actor.typed.Behavior
BehaviorDecorators, canonicalize, existsInStack, interpretMessage, interpretSignal, isAlive, isDeferred, isUnhandled, narrow, start, validateAsInitial
-
-
-
-
Constructor Detail
-
AbstractBehavior
public AbstractBehavior(ActorContext<T> context)
-
-
Method Detail
-
context
protected ActorContext<T> context()
-
onMessage
public abstract Behavior<T> onMessage(T msg) throws java.lang.Exception
Implement this method to process an incoming message and return the next behavior.The returned behavior can in addition to normal behaviors be one of the canned special objects:
- returning
stopped
will terminate this Behavior - returning
this
orsame
designates to reuse the current Behavior - returning
unhandled
keeps the same Behavior and signals that the message was not yet handled
- Throws:
java.lang.Exception
- returning
-
onSignal
public scala.PartialFunction<Signal,Behavior<T>> onSignal() throws java.lang.Exception
Override this method to process an incomingSignal
and return the next behavior. This means that all lifecycle hooks, ReceiveTimeout, Terminated and Failed messages can initiate a behavior change.The returned behavior can in addition to normal behaviors be one of the canned special objects:
* returning
stopped
will terminate this Behavior * returningthis
orsame
designates to reuse the current Behavior * returningunhandled
keeps the same Behavior and signals that the message was not yet handledBy default, partial function is empty and does not handle any signals.
- Throws:
java.lang.Exception
-
receive
public final Behavior<T> receive(TypedActorContext<T> ctx, T msg) throws java.lang.Exception
Description copied from class:ExtensibleBehavior
Process an incoming message and return the next behavior.The returned behavior can in addition to normal behaviors be one of the canned special objects:
* returning
stopped
will terminate this Behavior * returningsame
designates to reuse the current Behavior * returningunhandled
keeps the same Behavior and signals that the message was not yet handledCode calling this method should use
Behavior$
canonicalize
to replace the special objects with real Behaviors.- Specified by:
receive
in classExtensibleBehavior<T>
- Throws:
java.lang.Exception
-
receiveSignal
public final Behavior<T> receiveSignal(TypedActorContext<T> ctx, Signal msg) throws java.lang.Exception
Description copied from class:ExtensibleBehavior
Process an incomingSignal
and return the next behavior. This means that all lifecycle hooks, ReceiveTimeout, Terminated and Failed messages can initiate a behavior change.The returned behavior can in addition to normal behaviors be one of the canned special objects:
* returning
stopped
will terminate this Behavior * returningsame
designates to reuse the current Behavior * returningunhandled
keeps the same Behavior and signals that the message was not yet handledCode calling this method should use
Behavior$
canonicalize
to replace the special objects with real Behaviors.- Specified by:
receiveSignal
in classExtensibleBehavior<T>
- Throws:
java.lang.Exception
-
-