akka.routing
Class TailChoppingRoutingLogic

java.lang.Object
  extended by akka.routing.TailChoppingRoutingLogic
All Implemented Interfaces:
NoSerializationVerificationNeeded, RoutingLogic, java.io.Serializable, scala.Equals, scala.Product

public final class TailChoppingRoutingLogic
extends java.lang.Object
implements RoutingLogic, scala.Product, scala.Serializable

Sends the message to a first, random picked, routee, then wait a specified interval and then send to a second, random picked, and so on till one full cycle.

param: scheduler schedules sending messages to routees

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 next routee will be picked

param: context execution context used by scheduler

See Also:
Serialized Form

Constructor Summary
TailChoppingRoutingLogic(Scheduler scheduler, scala.concurrent.duration.FiniteDuration within, scala.concurrent.duration.FiniteDuration interval, scala.concurrent.ExecutionContext context)
           
 
Method Summary
 scala.concurrent.ExecutionContext context()
           
 scala.concurrent.duration.FiniteDuration interval()
           
 Scheduler scheduler()
           
 Routee select(java.lang.Object message, scala.collection.immutable.IndexedSeq<Routee> routees)
          Pick the destination for a given message.
 scala.concurrent.duration.FiniteDuration within()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface scala.Product
productArity, productElement, productIterator, productPrefix
 
Methods inherited from interface scala.Equals
canEqual, equals
 

Constructor Detail

TailChoppingRoutingLogic

public TailChoppingRoutingLogic(Scheduler scheduler,
                                scala.concurrent.duration.FiniteDuration within,
                                scala.concurrent.duration.FiniteDuration interval,
                                scala.concurrent.ExecutionContext context)
Method Detail

scheduler

public Scheduler scheduler()

within

public scala.concurrent.duration.FiniteDuration within()

interval

public scala.concurrent.duration.FiniteDuration interval()

context

public scala.concurrent.ExecutionContext context()

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
Parameters:
message - (undocumented)
routees - (undocumented)
Returns:
(undocumented)