Class AdaptiveLoadBalancingRoutingLogic

  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.

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


public AdaptiveLoadBalancingRoutingLogic(ActorSystem system,
                                         MetricsSelector metricsSelector)
Method Detail


public ActorSystem system()


public MetricsSelector metricsSelector()


public final void metricsChanged(ClusterEvent.ClusterMetricsChanged event)


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