Packages

trait GroupRouter[T] extends Behavior[T]

Provides builder style configuration options for group routers

Not for user extension. Use Routers#group to create

Annotations
@DoNotInherit()
Source
Routers.scala
Linear Supertypes
Type Hierarchy
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. GroupRouter
  2. Behavior
  3. AnyRef
  4. Any
Implicitly
  1. by BehaviorDecorators
  2. by any2stringadd
  3. by StringFormat
  4. by Ensuring
  5. by ArrowAssoc
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Abstract Value Members

  1. abstract def withConsistentHashingRouting(virtualNodesFactor: Int, mapping: (T) => String): GroupRouter[T]

    Route messages by using consistent hashing.

    Route messages by using consistent hashing.

    From wikipedia: Consistent hashing is based on mapping each object to a point on a circle (or equivalently, mapping each object to a real angle). The system maps each available machine (or other storage bucket) to many pseudo-randomly distributed points on the same circle.

    virtualNodesFactor

    This factor has to be greater or equal to 1. Assuming that the reader knows what consistent hashing is (if not, please refer: https://www.tom-e-white.com/2007/11/consistent-hashing.html or wiki). This number is responsible for creating additional, virtual addresses for a provided set of routees, so that in the total number of points on hashing ring will be equal to numberOfRoutees * virtualNodesFactor (if virtualNodesFactor is equal to 1, then no additional points will be created). Those virtual nodes are being created by additionally rehashing routees to evenly distribute them across hashing ring. Consider increasing this number when you have a small number of routees. For bigger loads one can aim in having around 100-200 total addresses. Please also note that setting this number to a too big value will cause reasonable overhead when new routees will be added or old one removed.

    mapping

    Hash key extractor. This function will be used in consistent hashing process. Result of this operation should possibly uniquely distinguish messages.

  2. abstract def withRandomRouting(preferLocalRoutees: Boolean): GroupRouter[T]

    Route messages by randomly selecting the routee from the available routees.

    Route messages by randomly selecting the routee from the available routees. This is the default for group routers.

    preferLocalRoutees

    if the value is false, all reachable routees will be used; if the value is true and there are local routees, only local routees will be used. if the value is true and there is no local routees, remote routees will be used.

  3. abstract def withRandomRouting(): GroupRouter[T]

    Route messages by randomly selecting the routee from the available routees.

    Route messages by randomly selecting the routee from the available routees. This is the default for group routers.

  4. abstract def withRoundRobinRouting(preferLocalRoutees: Boolean): GroupRouter[T]

    Route messages by using round robin.

    Route messages by using round robin.

    Round robin gives fair routing where every available routee gets the same amount of messages as long as the set of routees stays relatively stable, but may be unfair if the set of routees changes a lot.

    preferLocalRoutees

    if the value is false, all reachable routees will be used; if the value is true and there are local routees, only local routees will be used. if the value true and there is no local routees, remote routees will be used.

  5. abstract def withRoundRobinRouting(): GroupRouter[T]

    Route messages by using round robin.

    Route messages by using round robin.

    Round robin gives fair routing where every available routee gets the same amount of messages as long as the set of routees stays relatively stable, but may be unfair if the set of routees changes a lot.

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. def +(other: String): String
    Implicit
    This member is added by an implicit conversion from GroupRouter[T] toany2stringadd[GroupRouter[T]] performed by method any2stringadd in scala.Predef.
    Definition Classes
    any2stringadd
  4. def ->[B](y: B): (GroupRouter[T], B)
    Implicit
    This member is added by an implicit conversion from GroupRouter[T] toArrowAssoc[GroupRouter[T]] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc
    Annotations
    @inline()
  5. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  6. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  7. val behavior: Behavior[T]
    Implicit
    This member is added by an implicit conversion from GroupRouter[T] toBehaviorDecorators[T] performed by method BehaviorDecorators in org.apache.pekko.actor.typed.Behavior.
    Definition Classes
    BehaviorDecorators
  8. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @HotSpotIntrinsicCandidate() @native()
  9. def ensuring(cond: (GroupRouter[T]) => Boolean, msg: => Any): GroupRouter[T]
    Implicit
    This member is added by an implicit conversion from GroupRouter[T] toEnsuring[GroupRouter[T]] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  10. def ensuring(cond: (GroupRouter[T]) => Boolean): GroupRouter[T]
    Implicit
    This member is added by an implicit conversion from GroupRouter[T] toEnsuring[GroupRouter[T]] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  11. def ensuring(cond: Boolean, msg: => Any): GroupRouter[T]
    Implicit
    This member is added by an implicit conversion from GroupRouter[T] toEnsuring[GroupRouter[T]] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  12. def ensuring(cond: Boolean): GroupRouter[T]
    Implicit
    This member is added by an implicit conversion from GroupRouter[T] toEnsuring[GroupRouter[T]] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  13. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  15. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @HotSpotIntrinsicCandidate() @native()
  16. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @HotSpotIntrinsicCandidate() @native()
  17. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  18. final def narrow[U <: T]: Behavior[U]

    Narrow the type of this Behavior, which is always a safe operation.

    Narrow the type of this Behavior, which is always a safe operation. This method is necessary to implement the contravariant nature of Behavior (which cannot be expressed directly due to type inference problems).

    Definition Classes
    Behavior
  19. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  20. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @HotSpotIntrinsicCandidate() @native()
  21. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @HotSpotIntrinsicCandidate() @native()
  22. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  23. def toString(): String
    Definition Classes
    AnyRef → Any
  24. def transformMessages[Outer](matcher: PartialFunction[Outer, T])(implicit arg0: ClassTag[Outer]): Behavior[Outer]

    Transform the incoming messages by placing a funnel in front of the wrapped Behavior: the supplied PartialFunction decides which message to pull in (those that it is defined at) and may transform the incoming message to place them into the wrapped Behavior’s type hierarchy.

    Transform the incoming messages by placing a funnel in front of the wrapped Behavior: the supplied PartialFunction decides which message to pull in (those that it is defined at) and may transform the incoming message to place them into the wrapped Behavior’s type hierarchy. Signals are not transformed.

    Example:

    val b: Behavior[Number] =
      Behaviors
        .receive[String] { (ctx, msg) =>
          println(msg)
          Behaviors.same
        }
        .transformMessages[Number] {
          case b: BigDecimal => s"BigDecimal($b)"
          case i: BigInt     => s"BigInteger($i)"
          // all other kinds of Number will be `unhandled`
        }

    The ClassTag for Outer 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.

    Implicit
    This member is added by an implicit conversion from GroupRouter[T] toBehaviorDecorators[T] performed by method BehaviorDecorators in org.apache.pekko.actor.typed.Behavior.
    Definition Classes
    BehaviorDecorators
  25. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  26. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  27. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

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

    (Since version 9)

  2. def formatted(fmtstr: String): String
    Implicit
    This member is added by an implicit conversion from GroupRouter[T] toStringFormat[GroupRouter[T]] performed by method StringFormat in scala.Predef.
    Definition Classes
    StringFormat
    Annotations
    @deprecated @inline()
    Deprecated

    (Since version 2.12.16) Use formatString.format(value) instead of value.formatted(formatString), or use the f"" string interpolator. In Java 15 and later, formatted resolves to the new method in String which has reversed parameters.

  3. def [B](y: B): (GroupRouter[T], B)
    Implicit
    This member is added by an implicit conversion from GroupRouter[T] toArrowAssoc[GroupRouter[T]] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc
    Annotations
    @deprecated
    Deprecated

    (Since version 2.13.0) Use -> instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.

Inherited from Behavior[T]

Inherited from AnyRef

Inherited from Any

Inherited by implicit conversion BehaviorDecorators fromGroupRouter[T] to BehaviorDecorators[T]

Inherited by implicit conversion any2stringadd fromGroupRouter[T] to any2stringadd[GroupRouter[T]]

Inherited by implicit conversion StringFormat fromGroupRouter[T] to StringFormat[GroupRouter[T]]

Inherited by implicit conversion Ensuring fromGroupRouter[T] to Ensuring[GroupRouter[T]]

Inherited by implicit conversion ArrowAssoc fromGroupRouter[T] to ArrowAssoc[GroupRouter[T]]

Ungrouped