public final class JoinSeedNodeProcess extends java.lang.Object implements Actor, ActorLogging
Sends InitJoin to all seed nodes (except itself) and expect InitJoinAck reply back. The seed node that replied first will be used, joined to. InitJoinAck replies received after the first one are ignored.
Retries if no InitJoinAck replies are received within the SeedNodeTimeout. When at least one reply has been received it stops itself after an idle SeedNodeTimeout.
The seed nodes can be started in any order, but they will not be "active", until they have been able to join another seed node (seed1). They will retry the join procedure. So one possible startup scenario is: 1. seed2 started, but doesn't get any ack from seed1 or seed3 2. seed3 started, doesn't get any ack from seed1 or seed3 (seed2 doesn't reply) 3. seed1 is started and joins itself 4. seed2 retries the join procedure and gets an ack from seed1, and then joins to seed1 5. seed3 retries the join procedure and gets acks from seed2 first, and then joins to seed2
Actor.emptyBehavior$, Actor.ignoringBehavior$
Constructor and Description |
---|
JoinSeedNodeProcess(scala.collection.immutable.IndexedSeq<Address> seedNodes) |
Modifier and Type | Method and Description |
---|---|
int |
attempt() |
ActorContext |
context()
Stores the context for this actor, including self, and sender.
|
scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit> |
done() |
void |
preStart()
User overridable callback.
|
scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit> |
receive()
This defines the initial actor behavior, it must return a partial function
with the actor logic.
|
ActorRef |
self()
The 'self' field holds the ActorRef for this actor.
|
Address |
selfAddress() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
aroundPostRestart, aroundPostStop, aroundPreRestart, aroundPreStart, aroundReceive, postRestart, postStop, preRestart, sender, supervisorStrategy, unhandled
log
public JoinSeedNodeProcess(scala.collection.immutable.IndexedSeq<Address> seedNodes)
public ActorContext context()
Actor
forward
.
WARNING: Only valid within the Actor itself, so do not close over it and publish it to other threads!
ActorContext
is the Scala API. getContext
returns a
UntypedActorContext
, which is the Java API of the actor
context.
public final ActorRef self()
Actor
self ! message
public Address selfAddress()
public int attempt()
public void preStart()
Actor
public scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit> receive()
Actor
public scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit> done()