akka.cluster.routing
Class AdaptiveLoadBalancingRoutingLogic

java.lang.Object
  extended by akka.cluster.routing.AdaptiveLoadBalancingRoutingLogic
All Implemented Interfaces:
NoSerializationVerificationNeeded, RoutingLogic, java.io.Serializable, scala.Equals, scala.Product

public final class AdaptiveLoadBalancingRoutingLogic
extends java.lang.Object
implements RoutingLogic, NoSerializationVerificationNeeded, scala.Product, scala.Serializable

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.

param: system the actor system hosting this router

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

See Also:
Serialized Form

Constructor Summary
AdaptiveLoadBalancingRoutingLogic(ActorSystem system, MetricsSelector metricsSelector)
           
 
Method Summary
 void metricsChanged(ClusterEvent.ClusterMetricsChanged event)
           
 MetricsSelector metricsSelector()
           
 Routee select(java.lang.Object message, scala.collection.immutable.IndexedSeq<Routee> routees)
          Pick the destination for a given message.
 ActorSystem system()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface scala.Product
productArity, productElement, productIterator, productPrefix
 
Methods inherited from interface scala.Equals
canEqual, equals
 

Constructor Detail

AdaptiveLoadBalancingRoutingLogic

public AdaptiveLoadBalancingRoutingLogic(ActorSystem system,
                                         MetricsSelector metricsSelector)
Method Detail

system

public ActorSystem system()

metricsSelector

public MetricsSelector metricsSelector()

metricsChanged

public final void metricsChanged(ClusterEvent.ClusterMetricsChanged event)

select

public Routee select(java.lang.Object message,
                     scala.collection.immutable.IndexedSeq<Routee> routees)
Description copied from interface: RoutingLogic
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 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 the IndexedSeq.

Specified by:
select in interface RoutingLogic
Parameters:
message - (undocumented)
routees - (undocumented)
Returns:
(undocumented)