Class AdaptiveLoadBalancingPool
- All Implemented Interfaces:
Serializable,Pool,RouterConfig,scala.Equals,scala.Product
It uses random selection of routees based on probabilities derived from the remaining capacity of corresponding node.
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: metricsSelector decides what probability to use for selecting a routee, based on remaining capacity as indicated by the node metrics
param: nrOfInstances initial number of routees in the pool
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
ConstructorsConstructorDescriptionAdaptiveLoadBalancingPool(com.typesafe.config.Config config, DynamicAccess dynamicAccess) AdaptiveLoadBalancingPool(MetricsSelector metricsSelector, int nr) Java APIAdaptiveLoadBalancingPool(MetricsSelector metricsSelector, int nrOfInstances, SupervisorStrategy supervisorStrategy, String routerDispatcher, boolean usePoolDispatcher) -
Method Summary
Modifier and TypeMethodDescriptionstatic MetricsSelectorstatic intstatic SupervisorStrategystatic Stringstatic booleanstatic AdaptiveLoadBalancingPoolapply(MetricsSelector metricsSelector, int nrOfInstances, SupervisorStrategy supervisorStrategy, String routerDispatcher, boolean usePoolDispatcher) static MetricsSelectorstatic intstatic SupervisorStrategystatic Stringstatic booleanbooleancopy(MetricsSelector metricsSelector, int nrOfInstances, SupervisorStrategy supervisorStrategy, String routerDispatcher, boolean usePoolDispatcher) 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 messagesscala.Option<Props>routingLogicController(RoutingLogic routingLogic) Possibility to define an actor for controlling the routing logic from external stimuli (e.g.SupervisorStrategy for the head actor, i.e.toString()static scala.Option<scala.Tuple5<MetricsSelector,Object, SupervisorStrategy, String, Object>> booleanUse a dedicated dispatcher for the routees of the pool.withDispatcher(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 supervisor strategy of the given RouterConfig if this RouterConfig doesn't have onewithSupervisorStrategy(SupervisorStrategy strategy) Setting the supervisor strategy to be used for the “head” Router actor.Methods 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 scala.Product
productElementNamesMethods inherited from interface org.apache.pekko.routing.RouterConfig
isManagementMessage, verifyConfig
-
Constructor Details
-
AdaptiveLoadBalancingPool
public AdaptiveLoadBalancingPool(MetricsSelector metricsSelector, int nrOfInstances, SupervisorStrategy supervisorStrategy, String routerDispatcher, boolean usePoolDispatcher) -
AdaptiveLoadBalancingPool
-
AdaptiveLoadBalancingPool
Java API- Parameters:
metricsSelector- decides what probability to use for selecting a routee, based on remaining capacity as indicated by the node metricsnr- initial number of routees in the pool
-
-
Method Details
-
$lessinit$greater$default$1
-
$lessinit$greater$default$2
public static int $lessinit$greater$default$2() -
$lessinit$greater$default$3
-
$lessinit$greater$default$4
-
$lessinit$greater$default$5
public static boolean $lessinit$greater$default$5() -
apply
public static AdaptiveLoadBalancingPool apply(MetricsSelector metricsSelector, int nrOfInstances, SupervisorStrategy supervisorStrategy, String routerDispatcher, boolean usePoolDispatcher) -
apply$default$1
-
apply$default$2
public static int apply$default$2() -
apply$default$3
-
apply$default$4
-
apply$default$5
public static boolean apply$default$5() -
unapply
public static scala.Option<scala.Tuple5<MetricsSelector,Object, unapplySupervisorStrategy, String, Object>> (AdaptiveLoadBalancingPool x$0) -
metricsSelector
-
nrOfInstances
public int nrOfInstances() -
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
-
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. -
nrOfInstances
Description copied from interface:PoolInitial number of routee instances- Specified by:
nrOfInstancesin 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
-
routingLogicController
Description copied from interface:RouterConfigPossibility to define an actor for controlling the routing logic from external stimuli (e.g. monitoring metrics). This actor will be a child of the router "head" actor. Management messages not handled by the "head" actor are delegated to this controller actor.- Specified by:
routingLogicControllerin interfaceRouterConfig
-
withSupervisorStrategy
Setting the supervisor strategy to be used for the “head” Router actor. -
withDispatcher
Setting the dispatcher to be used for the router head actor, which handles supervision, death watch and router management messages. -
withFallback
Uses the supervisor strategy of the given RouterConfig if this RouterConfig doesn't have one- Specified by:
withFallbackin interfaceRouterConfig
-
copy
public AdaptiveLoadBalancingPool copy(MetricsSelector metricsSelector, int nrOfInstances, SupervisorStrategy supervisorStrategy, String routerDispatcher, boolean usePoolDispatcher) -
copy$default$1
-
copy$default$2
public int copy$default$2() -
copy$default$3
-
copy$default$4
-
copy$default$5
public boolean copy$default$5() -
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
-