akka.cluster.routing
Class AdaptiveLoadBalancingGroup

java.lang.Object
  extended by akka.cluster.routing.AdaptiveLoadBalancingGroup
All Implemented Interfaces:
Group, RouterConfig, java.io.Serializable, scala.Equals, scala.Product

public final class AdaptiveLoadBalancingGroup
extends java.lang.Object
implements Group, scala.Product, scala.Serializable

A router group that performs load balancing of messages to cluster nodes based on cluster metric data.

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 paths during instantiation they will be ignored if the router is defined in the configuration file for the actor being used.

param: metricsSelector decides what probability to use for selecting a routee, based on remaining capacity as indicated by the node metrics

param: paths string representation of the actor paths of the routees, messages are sent with ActorSelection to these paths

param: routerDispatcher dispatcher to use for the router head actor, which handles router management messages

See Also:
Serialized Form

Constructor Summary
AdaptiveLoadBalancingGroup(com.typesafe.config.Config config, DynamicAccess dynamicAccess)
           
AdaptiveLoadBalancingGroup(MetricsSelector metricsSelector, java.lang.Iterable<java.lang.String> routeesPaths)
          Java API
AdaptiveLoadBalancingGroup(MetricsSelector metricsSelector, scala.collection.immutable.Iterable<java.lang.String> paths, java.lang.String routerDispatcher)
           
 
Method Summary
 Router createRouter(ActorSystem system)
          Create the actual router, responsible for routing messages to routees.
 MetricsSelector metricsSelector()
           
 scala.collection.immutable.Iterable<java.lang.String> paths()
           
 java.lang.String routerDispatcher()
          Dispatcher ID to use for running the &ldquo;head&rdquo; actor, which handles supervision, death watch and router management messages
 scala.Option<Props> routingLogicController(RoutingLogic routingLogic)
          Possibility to define an actor for controlling the routing logic from external stimuli (e.g.
 AdaptiveLoadBalancingGroup withDispatcher(java.lang.String dispatcherId)
          Setting the dispatcher to be used for the router head actor, which handles router management messages
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface akka.routing.Group
createRouterActor, props, routeeFor
 
Methods inherited from interface akka.routing.RouterConfig
isManagementMessage, stopRouterWhenAllRouteesRemoved, verifyConfig, withFallback
 
Methods inherited from interface scala.Product
productArity, productElement, productIterator, productPrefix
 
Methods inherited from interface scala.Equals
canEqual, equals
 

Constructor Detail

AdaptiveLoadBalancingGroup

public AdaptiveLoadBalancingGroup(MetricsSelector metricsSelector,
                                  scala.collection.immutable.Iterable<java.lang.String> paths,
                                  java.lang.String routerDispatcher)

AdaptiveLoadBalancingGroup

public AdaptiveLoadBalancingGroup(com.typesafe.config.Config config,
                                  DynamicAccess dynamicAccess)

AdaptiveLoadBalancingGroup

public AdaptiveLoadBalancingGroup(MetricsSelector metricsSelector,
                                  java.lang.Iterable<java.lang.String> routeesPaths)
Java API

Parameters:
metricsSelector - decides what probability to use for selecting a routee, based on remaining capacity as indicated by the node metrics
routeesPaths - string representation of the actor paths of the routees, messages are sent with ActorSelection to these paths
Method Detail

metricsSelector

public MetricsSelector metricsSelector()

paths

public scala.collection.immutable.Iterable<java.lang.String> paths()
Specified by:
paths in interface Group

routerDispatcher

public java.lang.String routerDispatcher()
Description copied from interface: RouterConfig
Dispatcher ID to use for running the &ldquo;head&rdquo; actor, which handles supervision, death watch and router management messages

Specified by:
routerDispatcher in interface RouterConfig
Returns:
(undocumented)

createRouter

public Router createRouter(ActorSystem system)
Description copied from interface: RouterConfig
Create the actual router, responsible for routing messages to routees.

Specified by:
createRouter in interface RouterConfig
Parameters:
system - the ActorSystem this router belongs to
Returns:
(undocumented)

routingLogicController

public scala.Option<Props> routingLogicController(RoutingLogic routingLogic)
Description copied from interface: RouterConfig
Possibility 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. Managment messages not handled by the "head" actor are delegated to this controller actor.

Specified by:
routingLogicController in interface RouterConfig
Parameters:
routingLogic - (undocumented)
Returns:
(undocumented)

withDispatcher

public AdaptiveLoadBalancingGroup withDispatcher(java.lang.String dispatcherId)
Setting the dispatcher to be used for the router head actor, which handles router management messages

Parameters:
dispatcherId - (undocumented)
Returns:
(undocumented)