Class ExtensibleBehavior<T>

java.lang.Object
org.apache.pekko.actor.typed.Behavior<T>
org.apache.pekko.actor.typed.ExtensibleBehavior<T>
Direct Known Subclasses:
AbstractBehavior, AbstractBehavior, AbstractMatchingBehavior, BehaviorImpl.ReceiveBehavior, BehaviorImpl.ReceiveMessageBehavior, BuiltBehavior, Receive

public abstract class ExtensibleBehavior<T> extends Behavior<T>
Extension point for implementing custom behaviors in addition to the existing set of behaviors available through the DSLs in pekko.actor.typed.scaladsl.Behaviors and pekko.actor.typed.javadsl.Behaviors

Note that behaviors that keep an inner behavior, and intercepts messages for it should not be implemented as an extensible behavior but should instead use the BehaviorInterceptor

  • Constructor Details

    • ExtensibleBehavior

      public ExtensibleBehavior()
  • Method Details

    • receive

      public abstract Behavior<T> receive(TypedActorContext<T> ctx, T msg) throws Exception
      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 same designates to reuse the current Behavior * returning unhandled keeps the same Behavior and signals that the message was not yet handled

      Code calling this method should use Behavior$ canonicalize to replace the special objects with real Behaviors.

      Throws:
      Exception
    • receiveSignal

      public abstract Behavior<T> receiveSignal(TypedActorContext<T> ctx, Signal msg) throws Exception
      Process an incoming Signal 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 * returning same designates to reuse the current Behavior * returning unhandled keeps the same Behavior and signals that the message was not yet handled

      Code calling this method should use Behavior$ canonicalize to replace the special objects with real Behaviors.

      Throws:
      Exception