Class 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, java.io.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 Detail

      • AdaptiveLoadBalancingRoutingLogic

        public AdaptiveLoadBalancingRoutingLogic​(ActorSystem system,
                                                 MetricsSelector metricsSelector)
    • Method Detail

      • $lessinit$greater$default$2

        public static MetricsSelector $lessinit$greater$default$2()
      • 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
      • productPrefix

        public java.lang.String productPrefix()
        Specified by:
        productPrefix in interface scala.Product
      • productArity

        public int productArity()
        Specified by:
        productArity in interface scala.Product
      • productElement

        public java.lang.Object productElement​(int x$1)
        Specified by:
        productElement in interface scala.Product
      • productIterator

        public scala.collection.Iterator<java.lang.Object> productIterator()
        Specified by:
        productIterator in interface scala.Product
      • canEqual

        public boolean canEqual​(java.lang.Object x$1)
        Specified by:
        canEqual in interface scala.Equals
      • productElementName

        public java.lang.String productElementName​(int x$1)
        Specified by:
        productElementName in interface scala.Product
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object x$1)
        Specified by:
        equals in interface scala.Equals
        Overrides:
        equals in class java.lang.Object