Class ConsistentHashingPool
- All Implemented Interfaces:
Serializable,Pool,PoolOverrideUnsetConfig<ConsistentHashingPool>,RouterConfig,scala.Equals,scala.Product
pekko.routing.ConsistentHashingRoutingLogic.
The configuration parameter trumps the constructor arguments. This means that
if you provide nrOfInstances during instantiation they will be ignored if
the router is defined in the configuration file for the actor being used.
Supervision Setup
Any routees that are created by a router will be created as the router's children. The router is therefore also the children's supervisor.
The supervision strategy of the router actor can be configured with
withSupervisorStrategy(org.apache.pekko.actor.SupervisorStrategy). If no strategy is provided, routers default to
a strategy of “always escalate”. This means that errors are passed up to the
router's supervisor for handling.
The router's supervisor will treat the error as an error with the router itself. Therefore a directive to stop or restart will cause the router itself to stop or restart. The router, in turn, will cause its children to stop and restart.
param: nrOfInstances initial number of routees in the pool
param: resizer optional resizer that dynamically adjust the pool size
param: virtualNodesFactor number of virtual nodes per node, used in pekko.routing.ConsistentHash
param: hashMapping partial function from message to the data to use for the consistent hash key
param: supervisorStrategy strategy for supervising the routees, see 'Supervision Setup'
param: routerDispatcher dispatcher to use for the router head actor, which handles supervision, death watch and router management messages
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionConsistentHashingPool(int nr) Java APIConsistentHashingPool(int nrOfInstances, scala.Option<Resizer> resizer, int virtualNodesFactor, scala.PartialFunction<Object, Object> hashMapping, SupervisorStrategy supervisorStrategy, String routerDispatcher, boolean usePoolDispatcher) ConsistentHashingPool(com.typesafe.config.Config config) -
Method Summary
Modifier and TypeMethodDescriptionstatic scala.Option<Resizer>static intstatic SupervisorStrategystatic Stringstatic booleanstatic ConsistentHashingPoolapply(int nrOfInstances, scala.Option<Resizer> resizer, int virtualNodesFactor, scala.PartialFunction<Object, Object> hashMapping, SupervisorStrategy supervisorStrategy, String routerDispatcher, boolean usePoolDispatcher) static scala.Option<Resizer>static intstatic SupervisorStrategystatic Stringstatic booleanbooleancopy(int nrOfInstances, scala.Option<Resizer> resizer, int virtualNodesFactor, scala.PartialFunction<Object, Object> hashMapping, SupervisorStrategy supervisorStrategy, String routerDispatcher, boolean usePoolDispatcher) intscala.Option<Resizer>intbooleancreateRouter(ActorSystem system) Create the actual router, responsible for routing messages to routees.booleaninthashCode()intintnrOfInstances(ActorSystem sys) Initial number of routee instancesintproductElement(int x$1) productElementName(int x$1) scala.collection.Iterator<Object>scala.Option<Resizer>resizer()Pool with dynamically resizable number of routees return thepekko.routing.Resizerto use.Dispatcher ID to use for running the “head” actor, which handles supervision, death watch and router management messagesSupervisorStrategy for the head actor, i.e.toString()static scala.Option<scala.Tuple7<Object,scala.Option<Resizer>, Object, scala.PartialFunction<Object, Object>, SupervisorStrategy, String, Object>> booleanUse a dedicated dispatcher for the routees of the pool.intwithDispatcher(String dispatcherId) Setting the dispatcher to be used for the router head actor, which handles supervision, death watch and router management messages.withFallback(RouterConfig other) Uses the resizer and/or the supervisor strategy of the given RouterConfig if this RouterConfig doesn't have one, i.e.Java API: Setting the mapping from message to the data to use for the consistent hash key.withResizer(Resizer resizer) Setting the resizer to be used.withSupervisorStrategy(SupervisorStrategy strategy) Setting the supervisor strategy to be used for the “head” Router actor.withVirtualNodesFactor(int vnodes) Setting the number of virtual nodes per node, used inpekko.routing.ConsistentHashMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.pekko.routing.Pool
createRouterActor, enrichWithPoolDispatcher, newRoutee, props, stopRouterWhenAllRouteesRemovedMethods inherited from interface org.apache.pekko.routing.PoolOverrideUnsetConfig
overrideUnsetConfigMethods inherited from interface scala.Product
productElementNamesMethods inherited from interface org.apache.pekko.routing.RouterConfig
isManagementMessage, routingLogicController, verifyConfig
-
Constructor Details
-
ConsistentHashingPool
public ConsistentHashingPool(int nrOfInstances, scala.Option<Resizer> resizer, int virtualNodesFactor, scala.PartialFunction<Object, Object> hashMapping, SupervisorStrategy supervisorStrategy, String routerDispatcher, boolean usePoolDispatcher) -
ConsistentHashingPool
public ConsistentHashingPool(com.typesafe.config.Config config) -
ConsistentHashingPool
public ConsistentHashingPool(int nr) Java API- Parameters:
nr- initial number of routees in the pool
-
-
Method Details
-
$lessinit$greater$default$2
-
$lessinit$greater$default$3
public static int $lessinit$greater$default$3() -
$lessinit$greater$default$4
-
$lessinit$greater$default$5
-
$lessinit$greater$default$6
-
$lessinit$greater$default$7
public static boolean $lessinit$greater$default$7() -
apply
public static ConsistentHashingPool apply(int nrOfInstances, scala.Option<Resizer> resizer, int virtualNodesFactor, scala.PartialFunction<Object, Object> hashMapping, SupervisorStrategy supervisorStrategy, String routerDispatcher, boolean usePoolDispatcher) -
apply$default$2
-
apply$default$3
public static int apply$default$3() -
apply$default$4
-
apply$default$5
-
apply$default$6
-
apply$default$7
public static boolean apply$default$7() -
unapply
public static scala.Option<scala.Tuple7<Object,scala.Option<Resizer>, unapplyObject, scala.PartialFunction<Object, Object>, SupervisorStrategy, String, Object>> (ConsistentHashingPool x$0) -
nrOfInstances
public int nrOfInstances() -
resizer
Description copied from interface:PoolPool with dynamically resizable number of routees return thepekko.routing.Resizerto use. The resizer is invoked once when the router is created, before any messages can be sent to it. Resize is also triggered when messages are sent to the routees, and the resizer is invoked asynchronously, i.e. not necessarily before the message has been sent. -
virtualNodesFactor
public int virtualNodesFactor() -
hashMapping
-
supervisorStrategy
Description copied from interface:PoolSupervisorStrategy for the head actor, i.e. for supervising the routees of the pool.- Specified by:
supervisorStrategyin interfacePool
-
routerDispatcher
Description copied from interface:RouterConfigDispatcher ID to use for running the “head” actor, which handles supervision, death watch and router management messages- Specified by:
routerDispatcherin interfaceRouterConfig
-
usePoolDispatcher
public boolean usePoolDispatcher()Description copied from interface:PoolUse a dedicated dispatcher for the routees of the pool. The dispatcher is defined in 'pool-dispatcher' configuration property in the deployment section of the router.- Specified by:
usePoolDispatcherin interfacePool
-
createRouter
Description copied from interface:RouterConfigCreate the actual router, responsible for routing messages to routees.- Specified by:
createRouterin interfaceRouterConfig- Parameters:
system- the ActorSystem this router belongs to
-
nrOfInstances
Description copied from interface:PoolInitial number of routee instances- Specified by:
nrOfInstancesin interfacePool
-
withSupervisorStrategy
Setting the supervisor strategy to be used for the “head” Router actor.- Specified by:
withSupervisorStrategyin interfacePoolOverrideUnsetConfig<ConsistentHashingPool>
-
withResizer
Setting the resizer to be used.- Specified by:
withResizerin interfacePoolOverrideUnsetConfig<ConsistentHashingPool>
-
withDispatcher
Setting the dispatcher to be used for the router head actor, which handles supervision, death watch and router management messages. -
withVirtualNodesFactor
Setting the number of virtual nodes per node, used inpekko.routing.ConsistentHash -
withHashMapper
Java API: Setting the mapping from message to the data to use for the consistent hash key. -
withFallback
Uses the resizer and/or the supervisor strategy of the given RouterConfig if this RouterConfig doesn't have one, i.e. the resizer defined in code is used if resizer was not defined in config. Uses thehashMappingdefined in code, since that can't be defined in configuration.- Specified by:
withFallbackin interfaceRouterConfig
-
copy
public ConsistentHashingPool copy(int nrOfInstances, scala.Option<Resizer> resizer, int virtualNodesFactor, scala.PartialFunction<Object, Object> hashMapping, SupervisorStrategy supervisorStrategy, String routerDispatcher, boolean usePoolDispatcher) -
copy$default$1
public int copy$default$1() -
copy$default$2
-
copy$default$3
public int copy$default$3() -
copy$default$4
-
copy$default$5
-
copy$default$6
-
copy$default$7
public boolean copy$default$7() -
productPrefix
- Specified by:
productPrefixin interfacescala.Product
-
productArity
public int productArity()- Specified by:
productArityin interfacescala.Product
-
productElement
- Specified by:
productElementin interfacescala.Product
-
productIterator
- Specified by:
productIteratorin interfacescala.Product
-
canEqual
- Specified by:
canEqualin interfacescala.Equals
-
productElementName
- Specified by:
productElementNamein interfacescala.Product
-
hashCode
public int hashCode() -
toString
-
equals
-