Class AdaptiveLoadBalancingGroup

  • All Implemented Interfaces:
    Group, RouterConfig, java.io.Serializable, scala.Equals, scala.Product, scala.Serializable

    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 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

      • $lessinit$greater$default$1

        public static MetricsSelector $lessinit$greater$default$1()
      • $lessinit$greater$default$2

        public static scala.collection.immutable.Iterable<java.lang.String> $lessinit$greater$default$2()
      • $lessinit$greater$default$3

        public static java.lang.String $lessinit$greater$default$3()
      • apply$default$2

        public static scala.collection.immutable.Iterable<java.lang.String> apply$default$2()
      • apply$default$3

        public static java.lang.String apply$default$3()
      • isManagementMessage

        public static boolean isManagementMessage​(java.lang.Object msg)
      • stopRouterWhenAllRouteesRemoved

        public static boolean stopRouterWhenAllRouteesRemoved()
      • verifyConfig

        public static void verifyConfig​(ActorPath path)
      • props

        public static Props props()
      • routeeFor

        public static Routee routeeFor​(java.lang.String path,
                                       ActorContext context)
      • createRouterActor

        public static RouterActor createRouterActor()
      • paths

        public scala.collection.immutable.Iterable<java.lang.String> paths()
      • 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)
      • paths

        public scala.collection.immutable.Iterable<java.lang.String> paths​(ActorSystem system)
        Specified by:
        paths in interface Group
      • 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. Management 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)
      • copy$default$2

        public scala.collection.immutable.Iterable<java.lang.String> copy$default$2()
      • copy$default$3

        public java.lang.String copy$default$3()
      • 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
      • 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