public final class TailChoppingGroup extends java.lang.Object implements Group, scala.Product, scala.Serializable
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 Status.Failure
wrapping a AskTimeoutException
is sent to the sender.
Refer to 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 ActorSelection
to these paths
param: within expecting at least one reply within this duration, otherwise
it will reply with AskTimeoutException
in a 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
Constructor and Description |
---|
TailChoppingGroup(com.typesafe.config.Config config) |
TailChoppingGroup(java.lang.Iterable<java.lang.String> routeePaths,
scala.concurrent.duration.FiniteDuration within,
scala.concurrent.duration.FiniteDuration interval)
Java API
|
TailChoppingGroup(scala.collection.immutable.Iterable<java.lang.String> paths,
scala.concurrent.duration.FiniteDuration within,
scala.concurrent.duration.FiniteDuration interval,
java.lang.String routerDispatcher) |
Modifier and Type | Method and Description |
---|---|
abstract static boolean |
canEqual(java.lang.Object that) |
Router |
createRouter(ActorSystem system)
Create the actual router, responsible for routing messages to routees.
|
static RouterActor |
createRouterActor() |
abstract static boolean |
equals(java.lang.Object that) |
scala.concurrent.duration.FiniteDuration |
interval() |
static boolean |
isManagementMessage(java.lang.Object msg) |
scala.collection.immutable.Iterable<java.lang.String> |
paths() |
scala.collection.immutable.Iterable<java.lang.String> |
paths(ActorSystem system) |
abstract static int |
productArity() |
abstract static java.lang.Object |
productElement(int n) |
static scala.collection.Iterator<java.lang.Object> |
productIterator() |
static java.lang.String |
productPrefix() |
static Props |
props() |
static Routee |
routeeFor(java.lang.String path,
ActorContext context) |
java.lang.String |
routerDispatcher()
Dispatcher ID to use for running the “head” actor, which handles
supervision, death watch and router management messages
|
static scala.Option<Props> |
routingLogicController(RoutingLogic routingLogic) |
static boolean |
stopRouterWhenAllRouteesRemoved() |
static void |
verifyConfig(ActorPath path) |
TailChoppingGroup |
withDispatcher(java.lang.String dispatcherId)
Setting the dispatcher to be used for the router head actor, which handles
router management messages
|
static RouterConfig |
withFallback(RouterConfig other) |
scala.concurrent.duration.FiniteDuration |
within() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
createRouterActor, props, routeeFor
isManagementMessage, routingLogicController, stopRouterWhenAllRouteesRemoved, verifyConfig, withFallback
public TailChoppingGroup(scala.collection.immutable.Iterable<java.lang.String> paths, scala.concurrent.duration.FiniteDuration within, scala.concurrent.duration.FiniteDuration interval, java.lang.String routerDispatcher)
public TailChoppingGroup(com.typesafe.config.Config config)
public TailChoppingGroup(java.lang.Iterable<java.lang.String> routeePaths, scala.concurrent.duration.FiniteDuration within, scala.concurrent.duration.FiniteDuration interval)
routeePaths
- string representation of the actor paths of the routees, messages are
sent with ActorSelection
to these pathswithin
- expecting at least one reply within this duration, otherwise
it will reply with AskTimeoutException
in a Status.Failure
interval
- duration after which next routee will be pickedpublic static scala.Option<Props> routingLogicController(RoutingLogic routingLogic)
public static boolean isManagementMessage(java.lang.Object msg)
public static boolean stopRouterWhenAllRouteesRemoved()
public static RouterConfig withFallback(RouterConfig other)
public static void verifyConfig(ActorPath path)
public static Props props()
public static Routee routeeFor(java.lang.String path, ActorContext context)
public static RouterActor createRouterActor()
public abstract static boolean canEqual(java.lang.Object that)
public abstract static boolean equals(java.lang.Object that)
public abstract static java.lang.Object productElement(int n)
public abstract static int productArity()
public static scala.collection.Iterator<java.lang.Object> productIterator()
public static java.lang.String productPrefix()
public scala.collection.immutable.Iterable<java.lang.String> paths()
public scala.concurrent.duration.FiniteDuration within()
public scala.concurrent.duration.FiniteDuration interval()
public java.lang.String routerDispatcher()
RouterConfig
routerDispatcher
in interface RouterConfig
public Router createRouter(ActorSystem system)
RouterConfig
createRouter
in interface RouterConfig
system
- the ActorSystem this router belongs topublic scala.collection.immutable.Iterable<java.lang.String> paths(ActorSystem system)
public TailChoppingGroup withDispatcher(java.lang.String dispatcherId)
dispatcherId
- (undocumented)