Class TailChoppingGroup

java.lang.Object
org.apache.pekko.routing.TailChoppingGroup
All Implemented Interfaces:
Serializable, Group, RouterConfig, scala.Equals, scala.Product

public final class TailChoppingGroup extends Object implements Group, scala.Product, Serializable
A router group with retry logic, intended for cases where a return message is expected in response to a message sent to the routee. As each message is sent to the routing group, the routees are randomly ordered. The message is sent to the first routee. If no response is received before the interval has passed, the same message is sent to the next routee. This process repeats until either a response is received from some routee, the routees in the group are exhausted, or the within duration has passed since the first send. If no routee sends a response in time, a pekko.actor.Status.Failure wrapping a pekko.pattern.AskTimeoutException is sent to the sender.

Refer to pekko.routing.TailChoppingRoutingLogic for comments regarding the goal of this routing algorithm.

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: paths string representation of the actor paths of the routees, messages are sent with pekko.actor.ActorSelection to these paths

param: within expecting at least one reply within this duration, otherwise it will reply with pekko.pattern.AskTimeoutException in a pekko.actor.Status.Failure

param: interval duration after which the message will be sent to the next routee

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

See Also:
  • Constructor Details

    • TailChoppingGroup

      public TailChoppingGroup(scala.collection.immutable.Iterable<String> paths, scala.concurrent.duration.FiniteDuration within, scala.concurrent.duration.FiniteDuration interval, String routerDispatcher)
    • TailChoppingGroup

      public TailChoppingGroup(com.typesafe.config.Config config)
    • TailChoppingGroup

      public TailChoppingGroup(Iterable<String> routeePaths, scala.concurrent.duration.FiniteDuration within, scala.concurrent.duration.FiniteDuration interval)
      Java API
      Parameters:
      routeePaths - string representation of the actor paths of the routees, messages are sent with pekko.actor.ActorSelection to these paths
      within - expecting at least one reply within this duration, otherwise it will reply with pekko.pattern.AskTimeoutException in a pekko.actor.Status.Failure
      interval - duration after which next routee will be picked
    • TailChoppingGroup

      public TailChoppingGroup(Iterable<String> routeePaths, Duration within, Duration interval)
      Java API
      Parameters:
      routeePaths - string representation of the actor paths of the routees, messages are sent with pekko.actor.ActorSelection to these paths
      within - expecting at least one reply within this duration, otherwise it will reply with pekko.pattern.AskTimeoutException in a pekko.actor.Status.Failure
      interval - duration after which next routee will be picked
  • Method Details

    • $lessinit$greater$default$4

      public static String $lessinit$greater$default$4()
    • apply

      public static TailChoppingGroup apply(scala.collection.immutable.Iterable<String> paths, scala.concurrent.duration.FiniteDuration within, scala.concurrent.duration.FiniteDuration interval, String routerDispatcher)
    • apply$default$4

      public static String apply$default$4()
    • unapply

      public static scala.Option<scala.Tuple4<scala.collection.immutable.Iterable<String>,scala.concurrent.duration.FiniteDuration,scala.concurrent.duration.FiniteDuration,String>> unapply(TailChoppingGroup x$0)
    • paths

      public scala.collection.immutable.Iterable<String> paths()
    • within

      public scala.concurrent.duration.FiniteDuration within()
    • interval

      public scala.concurrent.duration.FiniteDuration interval()
    • routerDispatcher

      public 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
    • 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
    • paths

      public scala.collection.immutable.Iterable<String> paths(ActorSystem system)
      Specified by:
      paths in interface Group
    • withDispatcher

      public TailChoppingGroup withDispatcher(String dispatcherId)
      Setting the dispatcher to be used for the router head actor, which handles router management messages
    • copy

      public TailChoppingGroup copy(scala.collection.immutable.Iterable<String> paths, scala.concurrent.duration.FiniteDuration within, scala.concurrent.duration.FiniteDuration interval, String routerDispatcher)
    • copy$default$1

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

      public scala.concurrent.duration.FiniteDuration copy$default$2()
    • copy$default$3

      public scala.concurrent.duration.FiniteDuration copy$default$3()
    • copy$default$4

      public String copy$default$4()
    • productPrefix

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

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

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

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

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

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

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

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

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