Packages

object Behaviors

Source
Behaviors.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Behaviors
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. trait Receive[T] extends Behavior[T]

    Behavior that exposes additional fluent DSL methods to further change the message or signal reception behavior.

    Behavior that exposes additional fluent DSL methods to further change the message or signal reception behavior. It's returned by for example Behaviors.receiveMessage.

    Annotations
    @DoNotInherit()
  2. final class Supervise[T] extends AnyVal

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. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @HotSpotIntrinsicCandidate() @native()
  6. def empty[T]: Behavior[T]

    A behavior that treats every incoming message as unhandled.

  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  9. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @HotSpotIntrinsicCandidate() @native()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @HotSpotIntrinsicCandidate() @native()
  11. def ignore[T]: Behavior[T]

    A behavior that ignores every incoming message and returns “same”.

  12. def intercept[O, I](behaviorInterceptor: () => BehaviorInterceptor[O, I])(behavior: Behavior[I]): Behavior[O]

    Intercept messages and signals for a behavior by first passing them to a pekko.actor.typed.BehaviorInterceptor

    Intercept messages and signals for a behavior by first passing them to a pekko.actor.typed.BehaviorInterceptor

    When a behavior returns a new behavior as a result of processing a signal or message and that behavior already contains the same interceptor (defined by the isSame method on the BehaviorInterceptor) only the innermost interceptor is kept. This is to protect against stack overflow when recursively defining behaviors.

    The interceptor is created with a factory function in case it has state and should not be shared. If the interceptor has no state the same instance can be returned from the factory to avoid unnecessary object creation.

  13. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  14. def logMessages[T](logOptions: LogOptions, behavior: Behavior[T]): Behavior[T]

    Behavior decorator that logs all messages to the pekko.actor.typed.Behavior using the provided pekko.actor.typed.LogOptions configuration before invoking the wrapped behavior.

    Behavior decorator that logs all messages to the pekko.actor.typed.Behavior using the provided pekko.actor.typed.LogOptions configuration before invoking the wrapped behavior. To include an MDC context then first wrap logMessages with withMDC.

  15. def logMessages[T](behavior: Behavior[T]): Behavior[T]

    Behavior decorator that logs all messages to the pekko.actor.typed.Behavior using the provided pekko.actor.typed.LogOptions default configuration before invoking the wrapped behavior.

    Behavior decorator that logs all messages to the pekko.actor.typed.Behavior using the provided pekko.actor.typed.LogOptions default configuration before invoking the wrapped behavior. To include an MDC context then first wrap logMessages with withMDC.

  16. def monitor[T](monitor: ActorRef[T], behavior: Behavior[T])(implicit arg0: ClassTag[T]): Behavior[T]

    Behavior decorator that copies all received message to the designated monitor pekko.actor.typed.ActorRef before invoking the wrapped behavior.

    Behavior decorator that copies all received message to the designated monitor pekko.actor.typed.ActorRef before invoking the wrapped behavior. The wrapped behavior can evolve (i.e. return different behavior) without needing to be wrapped in a monitor call again.

    The ClassTag for T ensures that the messages of this class or a subclass thereof will be sent to the monitor. Other message types (e.g. a private protocol) will bypass the interceptor and be continue to the inner behavior.

    monitor

    The messages will also be sent to this ActorRef

    behavior

    The inner behavior that is decorated

  17. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  18. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @HotSpotIntrinsicCandidate() @native()
  19. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @HotSpotIntrinsicCandidate() @native()
  20. def receive[T](onMessage: (ActorContext[T], T) => Behavior[T]): Receive[T]

    Construct an actor behavior that can react to both incoming messages and lifecycle signals.

    Construct an actor behavior that can react to both incoming messages and lifecycle signals. After spawning this actor from another actor (or as the guardian of an pekko.actor.typed.ActorSystem) it will be executed within an ActorContext that allows access to the system, spawning and watching other actors, etc.

    Compared to using AbstractBehavior this factory is a more functional style of defining the Behavior. Processing the next message results in a new behavior that can potentially be different from this one. State is maintained by returning a new behavior that holds the new immutable state.

  21. def receiveMessage[T](onMessage: (T) => Behavior[T]): Receive[T]

    Simplified version of Receive with only a single argument - the message to be handled.

    Simplified version of Receive with only a single argument - the message to be handled. Useful for when the context is already accessible by other means, like being wrapped in an setup or similar.

    Construct an actor behavior that can react to both incoming messages and lifecycle signals. After spawning this actor from another actor (or as the guardian of an pekko.actor.typed.ActorSystem) it will be executed within an ActorContext that allows access to the system, spawning and watching other actors, etc.

    Compared to using AbstractBehavior this factory is a more functional style of defining the Behavior. Processing the next message results in a new behavior that can potentially be different from this one. State is maintained by returning a new behavior that holds the new immutable state.

  22. def receiveMessagePartial[T](onMessage: PartialFunction[T, Behavior[T]]): Receive[T]

    Construct an actor Behavior from a partial message handler which treats undefined messages as unhandled.

  23. def receiveMessageWithSame[T](onMessage: (T) => Unit): Receive[T]

    Simplified version of receiveMessage with only a single argument - the message to be handled, but it doesn't produce a return value of next behavior.

    Simplified version of receiveMessage with only a single argument - the message to be handled, but it doesn't produce a return value of next behavior. Useful for when the behavior doesn't want to change in runtime.

    Construct an actor behavior that can react to incoming messages but not to lifecycle signals. After spawning this actor from another actor (or as the guardian of an pekko.actor.typed.ActorSystem) it will be executed within an ActorContext that allows access to the system, spawning and watching other actors, etc.

    Compared to using AbstractBehavior this factory is a more functional style of defining the Behavior. Processing the next message will not result in different behavior than this one

    Since

    1.1.0

  24. def receivePartial[T](onMessage: PartialFunction[(ActorContext[T], T), Behavior[T]]): Receive[T]

    Construct an actor Behavior from a partial message handler which treats undefined messages as unhandled.

  25. def receiveSignal[T](handler: PartialFunction[(ActorContext[T], Signal), Behavior[T]]): Behavior[T]

    Construct an actor Behavior that can react to lifecycle signals only.

  26. def same[T]: Behavior[T]

    Return this behavior from message processing in order to advise the system to reuse the previous behavior.

    Return this behavior from message processing in order to advise the system to reuse the previous behavior. This is provided in order to avoid the allocation overhead of recreating the current behavior where that is not necessary.

  27. def setup[T](factory: (ActorContext[T]) => Behavior[T]): Behavior[T]

    setup is a factory for a behavior.

    setup is a factory for a behavior. Creation of the behavior instance is deferred until the actor is started, as opposed to Behaviors.receive that creates the behavior instance immediately before the actor is running. The factory function pass the ActorContext as parameter and that can for example be used for spawning child actors.

    setup is typically used as the outer most behavior when spawning an actor, but it can also be returned as the next behavior when processing a message or signal. In that case it will be started immediately after it is returned, i.e. next message will be processed by the started behavior.

  28. def stopped[T](postStop: () => Unit): Behavior[T]

    Return this behavior from message processing to signal that this actor shall terminate voluntarily.

    Return this behavior from message processing to signal that this actor shall terminate voluntarily. If this actor has created child actors then these will be stopped as part of the shutdown procedure.

    The PostStop signal that results from stopping this actor will first be passed to the current behavior and then the provided postStop callback will be invoked. All other messages and signals will effectively be ignored.

    An example of when the callback can be useful compared to the PostStop signal if you want to send a reply to the message that initiated a graceful stop.

  29. def stopped[T]: Behavior[T]

    Return this behavior from message processing to signal that this actor shall terminate voluntarily.

    Return this behavior from message processing to signal that this actor shall terminate voluntarily. If this actor has created child actors then these will be stopped as part of the shutdown procedure.

    The PostStop signal that results from stopping this actor will be passed to the current behavior. All other messages and signals will effectively be ignored.

  30. def supervise[T](wrapped: Behavior[T]): Supervise[T]

    Wrap the given behavior with the given SupervisorStrategy for the given exception.

    Wrap the given behavior with the given SupervisorStrategy for the given exception. Exceptions that are not subtypes of Thr will not be caught and thus lead to the termination of the actor.

    It is possible to specify different supervisor strategies, such as restart, resume, backoff.

    Note that only scala.util.control.NonFatal throwables will trigger the supervision strategy.

    Example:

    val dbConnector: Behavior[DbCommand] = ...
    
    val dbRestarts =
       Behaviors.supervise(dbConnector)
         .onFailure(SupervisorStrategy.restart) // handle all NonFatal exceptions
    
    val dbSpecificResumes =
       Behaviors.supervise(dbConnector)
         .onFailure[IndexOutOfBoundsException](SupervisorStrategy.resume) // resume for IndexOutOfBoundsException exceptions
  31. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  32. def toString(): String
    Definition Classes
    AnyRef → Any
  33. def unhandled[T]: Behavior[T]

    Return this behavior from message processing in order to advise the system to reuse the previous behavior, including the hint that the message has not been handled.

    Return this behavior from message processing in order to advise the system to reuse the previous behavior, including the hint that the message has not been handled. This hint may be used by composite behaviors that delegate (partial) handling to other behaviors.

  34. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  35. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  36. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  37. def withMdc[T](staticMdc: Map[String, String], mdcForMessage: (T) => Map[String, String])(behavior: Behavior[T])(implicit arg0: ClassTag[T]): Behavior[T]

    Combination of static and per message MDC (Mapped Diagnostic Context).

    Combination of static and per message MDC (Mapped Diagnostic Context).

    Each message will get the static MDC plus the MDC returned for the message. If the same key are in both the static and the per message MDC the per message one overwrites the static one in the resulting log entries.

    The staticMdc or mdcForMessage may be empty.

    The ClassTag for T ensures that only messages of this class or a subclass thereof will be intercepted. Other message types (e.g. a private protocol) will bypass the interceptor and be continue to the inner behavior untouched.

    staticMdc

    A static MDC applied for each message

    mdcForMessage

    Is invoked before each message is handled, allowing to setup MDC, MDC is cleared after each message processing by the inner behavior is done.

    behavior

    The actual behavior handling the messages, the MDC is used for the log entries logged through ActorContext.log

  38. def withMdc[T](staticMdc: Map[String, String])(behavior: Behavior[T])(implicit arg0: ClassTag[T]): Behavior[T]

    Static MDC (Mapped Diagnostic Context)

    Static MDC (Mapped Diagnostic Context)

    The ClassTag for T ensures that only messages of this class or a subclass thereof will be intercepted. Other message types (e.g. a private protocol) will bypass the interceptor and be continue to the inner behavior untouched.

    staticMdc

    This MDC is setup in the logging context for every message

    behavior

    The actual behavior handling the messages, the MDC is used for the log entries logged through ActorContext.log

  39. def withMdc[T](mdcForMessage: (T) => Map[String, String])(behavior: Behavior[T])(implicit arg0: ClassTag[T]): Behavior[T]

    Per message MDC (Mapped Diagnostic Context) logging.

    Per message MDC (Mapped Diagnostic Context) logging.

    The ClassTag for T ensures that only messages of this class or a subclass thereof will be intercepted. Other message types (e.g. a private protocol) will bypass the interceptor and be continue to the inner behavior untouched.

    mdcForMessage

    Is invoked before each message is handled, allowing to setup MDC, MDC is cleared after each message processing by the inner behavior is done.

    behavior

    The actual behavior handling the messages, the MDC is used for the log entries logged through ActorContext.log

  40. def withStash[T](capacity: Int)(factory: (StashBuffer[T]) => Behavior[T]): Behavior[T]

    Support for stashing messages to unstash at a later time.

  41. def withTimers[T](factory: (TimerScheduler[T]) => Behavior[T]): Behavior[T]

    Support for scheduled self messages in an actor.

    Support for scheduled self messages in an actor. It takes care of the lifecycle of the timers such as cancelling them when the actor is restarted or stopped.

    See also

    TimerScheduler

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

    (Since version 9)

Inherited from AnyRef

Inherited from Any

Ungrouped