final case class ConsistentHashingRoutingLogic(system: ActorSystem, virtualNodesFactor: Int = 0, hashMapping: ConsistentHashMapping = ConsistentHashingRouter.emptyConsistentHashMapping) extends RoutingLogic with Product with Serializable
Uses consistent hashing to select a routee based on the sent message.
There is 3 ways to define what data to use for the consistent hash key.
1. You can define hashMapping
/ withHashMapper
of the router to map incoming messages to their consistent hash key.
This makes the decision transparent for the sender.
2. The messages may implement pekko.routing.ConsistentHashingRouter.ConsistentHashable. The key is part of the message and it's convenient to define it together with the message definition.
3. The messages can be wrapped in a pekko.routing.ConsistentHashingRouter.ConsistentHashableEnvelope to define what data to use for the consistent hash key. The sender knows the key to use.
These ways to define the consistent hash key can be use together and at
the same time for one router. The hashMapping
is tried first.
- system
the actor system hosting this router
- virtualNodesFactor
number of virtual nodes per node, used in pekko.routing.ConsistentHash
- hashMapping
partial function from message to the data to use for the consistent hash key
- Annotations
- @SerialVersionUID()
- Source
- ConsistentHashing.scala
- Alphabetic
- By Inheritance
- ConsistentHashingRoutingLogic
- Serializable
- Product
- Equals
- RoutingLogic
- NoSerializationVerificationNeeded
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new ConsistentHashingRoutingLogic(system: ActorSystem)
Java API
Java API
- system
the actor system hosting this router
- new ConsistentHashingRoutingLogic(system: ActorSystem, virtualNodesFactor: Int = 0, hashMapping: ConsistentHashMapping = ConsistentHashingRouter.emptyConsistentHashMapping)
- system
the actor system hosting this router
- virtualNodesFactor
number of virtual nodes per node, used in pekko.routing.ConsistentHash
- hashMapping
partial function from message to the data to use for the consistent hash key
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- Implicit
- This member is added by an implicit conversion from ConsistentHashingRoutingLogic toany2stringadd[ConsistentHashingRoutingLogic] performed by method any2stringadd in scala.Predef.
- Definition Classes
- any2stringadd
- def ->[B](y: B): (ConsistentHashingRoutingLogic, B)
- Implicit
- This member is added by an implicit conversion from ConsistentHashingRoutingLogic toArrowAssoc[ConsistentHashingRoutingLogic] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @inline()
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @HotSpotIntrinsicCandidate() @native()
- def ensuring(cond: (ConsistentHashingRoutingLogic) => Boolean, msg: => Any): ConsistentHashingRoutingLogic
- Implicit
- This member is added by an implicit conversion from ConsistentHashingRoutingLogic toEnsuring[ConsistentHashingRoutingLogic] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: (ConsistentHashingRoutingLogic) => Boolean): ConsistentHashingRoutingLogic
- Implicit
- This member is added by an implicit conversion from ConsistentHashingRoutingLogic toEnsuring[ConsistentHashingRoutingLogic] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean, msg: => Any): ConsistentHashingRoutingLogic
- Implicit
- This member is added by an implicit conversion from ConsistentHashingRoutingLogic toEnsuring[ConsistentHashingRoutingLogic] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean): ConsistentHashingRoutingLogic
- Implicit
- This member is added by an implicit conversion from ConsistentHashingRoutingLogic toEnsuring[ConsistentHashingRoutingLogic] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- val hashMapping: ConsistentHashMapping
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- def select(message: Any, routees: IndexedSeq[Routee]): Routee
Pick the destination for a given message.
Pick the destination for a given message. Normally it picks one of the passed
routees
, but in the end it is up to the implementation to return whatever pekko.routing.Routee to use for sending a specific message.When implemented from Java it can be good to know that
routees.apply(index)
can be used to get an element from theIndexedSeq
.- Definition Classes
- ConsistentHashingRoutingLogic → RoutingLogic
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- val system: ActorSystem
- val virtualNodesFactor: Int
- val vnodes: Int
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- def withHashMapper(mapper: ConsistentHashMapper): ConsistentHashingRoutingLogic
Java API: Setting the mapping from message to the data to use for the consistent hash key.
- def withVirtualNodesFactor(vnodes: Int): ConsistentHashingRoutingLogic
Setting the number of virtual nodes per node, used in pekko.routing.ConsistentHash
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)
- def formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from ConsistentHashingRoutingLogic toStringFormat[ConsistentHashingRoutingLogic] performed by method StringFormat in scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @deprecated @inline()
- Deprecated
(Since version 2.12.16) Use
formatString.format(value)
instead ofvalue.formatted(formatString)
, or use thef""
string interpolator. In Java 15 and later,formatted
resolves to the new method in String which has reversed parameters.
- def →[B](y: B): (ConsistentHashingRoutingLogic, B)
- Implicit
- This member is added by an implicit conversion from ConsistentHashingRoutingLogic toArrowAssoc[ConsistentHashingRoutingLogic] 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.