Class TailChoppingGroup
- java.lang.Object
-
- akka.routing.TailChoppingGroup
-
- All Implemented Interfaces:
Group,RouterConfig,java.io.Serializable,scala.Equals,scala.Product
public final class TailChoppingGroup extends java.lang.Object implements Group, scala.Product, java.io.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 theintervalhas 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 thewithinduration has passed since the first send. If no routee sends a response in time, aStatus.Failurewrapping aAskTimeoutExceptionis sent to the sender.Refer to
TailChoppingRoutingLogicfor comments regarding the goal of this routing algorithm.The configuration parameter trumps the constructor arguments. This means that if you provide
pathsduring 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
ActorSelectionto these pathsparam: within expecting at least one reply within this duration, otherwise it will reply with
AskTimeoutExceptionin aStatus.Failureparam: 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:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description TailChoppingGroup(com.typesafe.config.Config config)TailChoppingGroup(java.lang.Iterable<java.lang.String> routeePaths, java.time.Duration within, java.time.Duration interval)Java APITailChoppingGroup(java.lang.Iterable<java.lang.String> routeePaths, scala.concurrent.duration.FiniteDuration within, scala.concurrent.duration.FiniteDuration interval)Java APITailChoppingGroup(scala.collection.immutable.Iterable<java.lang.String> paths, scala.concurrent.duration.FiniteDuration within, scala.concurrent.duration.FiniteDuration interval, java.lang.String routerDispatcher)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static java.lang.String$lessinit$greater$default$4()static TailChoppingGroupapply(scala.collection.immutable.Iterable<java.lang.String> paths, scala.concurrent.duration.FiniteDuration within, scala.concurrent.duration.FiniteDuration interval, java.lang.String routerDispatcher)static java.lang.Stringapply$default$4()booleancanEqual(java.lang.Object x$1)TailChoppingGroupcopy(scala.collection.immutable.Iterable<java.lang.String> paths, scala.concurrent.duration.FiniteDuration within, scala.concurrent.duration.FiniteDuration interval, java.lang.String routerDispatcher)scala.collection.immutable.Iterable<java.lang.String>copy$default$1()scala.concurrent.duration.FiniteDurationcopy$default$2()scala.concurrent.duration.FiniteDurationcopy$default$3()java.lang.Stringcopy$default$4()RoutercreateRouter(ActorSystem system)Create the actual router, responsible for routing messages to routees.booleanequals(java.lang.Object x$1)inthashCode()scala.concurrent.duration.FiniteDurationinterval()scala.collection.immutable.Iterable<java.lang.String>paths()scala.collection.immutable.Iterable<java.lang.String>paths(ActorSystem system)intproductArity()java.lang.ObjectproductElement(int x$1)java.lang.StringproductElementName(int x$1)scala.collection.Iterator<java.lang.Object>productIterator()java.lang.StringproductPrefix()java.lang.StringrouterDispatcher()Dispatcher ID to use for running the “head” actor, which handles supervision, death watch and router management messagesjava.lang.StringtoString()static scala.Option<scala.Tuple4<scala.collection.immutable.Iterable<java.lang.String>,scala.concurrent.duration.FiniteDuration,scala.concurrent.duration.FiniteDuration,java.lang.String>>unapply(TailChoppingGroup x$0)TailChoppingGroupwithDispatcher(java.lang.String dispatcherId)Setting the dispatcher to be used for the router head actor, which handles router management messagesscala.concurrent.duration.FiniteDurationwithin()-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface akka.routing.Group
createRouterActor, props, routeeFor
-
Methods inherited from interface akka.routing.RouterConfig
isManagementMessage, routingLogicController, stopRouterWhenAllRouteesRemoved, verifyConfig, withFallback
-
-
-
-
Constructor Detail
-
TailChoppingGroup
public TailChoppingGroup(scala.collection.immutable.Iterable<java.lang.String> paths, scala.concurrent.duration.FiniteDuration within, scala.concurrent.duration.FiniteDuration interval, java.lang.String routerDispatcher)
-
TailChoppingGroup
public TailChoppingGroup(com.typesafe.config.Config config)
-
TailChoppingGroup
public TailChoppingGroup(java.lang.Iterable<java.lang.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 withActorSelectionto these pathswithin- expecting at least one reply within this duration, otherwise it will reply withAskTimeoutExceptionin aStatus.Failureinterval- duration after which next routee will be picked
-
TailChoppingGroup
public TailChoppingGroup(java.lang.Iterable<java.lang.String> routeePaths, java.time.Duration within, java.time.Duration interval)Java API- Parameters:
routeePaths- string representation of the actor paths of the routees, messages are sent withActorSelectionto these pathswithin- expecting at least one reply within this duration, otherwise it will reply withAskTimeoutExceptionin aStatus.Failureinterval- duration after which next routee will be picked
-
-
Method Detail
-
$lessinit$greater$default$4
public static java.lang.String $lessinit$greater$default$4()
-
apply
public static TailChoppingGroup apply(scala.collection.immutable.Iterable<java.lang.String> paths, scala.concurrent.duration.FiniteDuration within, scala.concurrent.duration.FiniteDuration interval, java.lang.String routerDispatcher)
-
apply$default$4
public static java.lang.String apply$default$4()
-
unapply
public static scala.Option<scala.Tuple4<scala.collection.immutable.Iterable<java.lang.String>,scala.concurrent.duration.FiniteDuration,scala.concurrent.duration.FiniteDuration,java.lang.String>> unapply(TailChoppingGroup x$0)
-
paths
public scala.collection.immutable.Iterable<java.lang.String> paths()
-
within
public scala.concurrent.duration.FiniteDuration within()
-
interval
public scala.concurrent.duration.FiniteDuration interval()
-
routerDispatcher
public java.lang.String routerDispatcher()
Description copied from interface:RouterConfigDispatcher ID to use for running the “head” actor, which handles supervision, death watch and router management messages- Specified by:
routerDispatcherin interfaceRouterConfig
-
createRouter
public Router createRouter(ActorSystem system)
Description copied from interface:RouterConfigCreate the actual router, responsible for routing messages to routees.- Specified by:
createRouterin interfaceRouterConfig- Parameters:
system- the ActorSystem this router belongs to
-
paths
public scala.collection.immutable.Iterable<java.lang.String> paths(ActorSystem system)
-
withDispatcher
public TailChoppingGroup withDispatcher(java.lang.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<java.lang.String> paths, scala.concurrent.duration.FiniteDuration within, scala.concurrent.duration.FiniteDuration interval, java.lang.String routerDispatcher)
-
copy$default$1
public scala.collection.immutable.Iterable<java.lang.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 java.lang.String copy$default$4()
-
productPrefix
public java.lang.String productPrefix()
- Specified by:
productPrefixin interfacescala.Product
-
productArity
public int productArity()
- Specified by:
productArityin interfacescala.Product
-
productElement
public java.lang.Object productElement(int x$1)
- Specified by:
productElementin interfacescala.Product
-
productIterator
public scala.collection.Iterator<java.lang.Object> productIterator()
- Specified by:
productIteratorin interfacescala.Product
-
canEqual
public boolean canEqual(java.lang.Object x$1)
- Specified by:
canEqualin interfacescala.Equals
-
productElementName
public java.lang.String productElementName(int x$1)
- Specified by:
productElementNamein interfacescala.Product
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
equals
public boolean equals(java.lang.Object x$1)
- Specified by:
equalsin interfacescala.Equals- Overrides:
equalsin classjava.lang.Object
-
-