akka.cluster
Class Cluster

java.lang.Object
  extended by akka.cluster.Cluster
All Implemented Interfaces:
Extension

public class Cluster
extends java.lang.Object
implements Extension

This module is responsible cluster membership information. Changes to the cluster information is retrieved through subscribe(akka.actor.ActorRef, java.lang.Class). Commands to operate the cluster is available through methods in this class, such as join(akka.actor.Address), down(akka.actor.Address) and leave(akka.actor.Address).

Each cluster Member is identified by its Address, and the cluster address of this actor system is selfAddress(). A member also has a status; initially MemberStatus.Joining followed by MemberStatus.Up.


Constructor Summary
Cluster(ExtendedActorSystem system)
           
 
Method Summary
 ActorRef clusterCore()
          INTERNAL API
static Cluster createExtension(ExtendedActorSystem system)
           
 void down(Address address)
          Send command to DOWN the node specified by 'address'.
 FailureDetectorRegistry<Address> failureDetector()
           
static Cluster get(ActorSystem system)
           
 java.util.Set<java.lang.String> getSelfRoles()
          Java API: roles that this member has
 akka.cluster.Cluster.InfoLogger$ InfoLogger()
          Accessor for nested Scala object
 boolean isTerminated()
          Returns true if this cluster instance has be shutdown.
 void join(Address address)
          Try to join this cluster node with the node specified by 'address'.
 void joinSeedNodes(scala.collection.immutable.Seq<Address> seedNodes)
          Join the specified seed nodes without defining them in config.
 void leave(Address address)
          Send command to issue state transition to LEAVING for the node specified by 'address'.
static Cluster$ lookup()
           
 void publishCurrentClusterState()
          Publish current (full) state of the cluster to subscribers, that are subscribing to ClusterEvent.ClusterDomainEvent or ClusterEvent.CurrentClusterState.
 akka.cluster.ClusterReadView readView()
           
<T> void
registerOnMemberUp(scala.Function0<T> code)
          The supplied thunk will be run, once, when current cluster member is Up.
 void registerOnMemberUp(java.lang.Runnable callback)
          Java API: The supplied callback will be run, once, when current cluster member is Up.
 Scheduler scheduler()
          INTERNAL API
 Address selfAddress()
          The address of this cluster member.
 scala.collection.immutable.Set<java.lang.String> selfRoles()
          roles that this member has
 akka.cluster.UniqueAddress selfUniqueAddress()
          INTERNAL API
 void sendCurrentClusterState(ActorRef receiver)
          Publish current (full) state of the cluster to the specified receiver.
 ClusterSettings settings()
           
 void subscribe(ActorRef subscriber, java.lang.Class<?> to)
          Subscribe to cluster domain events.
 ExtendedActorSystem system()
           
 void unsubscribe(ActorRef subscriber)
          Unsubscribe to all cluster domain events.
 void unsubscribe(ActorRef subscriber, java.lang.Class<?> to)
          Unsubscribe to a specific type of cluster domain events, matching previous subscribe registration.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Cluster

public Cluster(ExtendedActorSystem system)
Method Detail

get

public static Cluster get(ActorSystem system)

lookup

public static Cluster$ lookup()

createExtension

public static Cluster createExtension(ExtendedActorSystem system)

system

public ExtendedActorSystem system()

settings

public ClusterSettings settings()

selfUniqueAddress

public akka.cluster.UniqueAddress selfUniqueAddress()
INTERNAL API


selfAddress

public Address selfAddress()
The address of this cluster member.


selfRoles

public scala.collection.immutable.Set<java.lang.String> selfRoles()
roles that this member has


getSelfRoles

public java.util.Set<java.lang.String> getSelfRoles()
Java API: roles that this member has


failureDetector

public FailureDetectorRegistry<Address> failureDetector()

scheduler

public Scheduler scheduler()
INTERNAL API


clusterCore

public ActorRef clusterCore()
INTERNAL API


readView

public akka.cluster.ClusterReadView readView()

isTerminated

public boolean isTerminated()
Returns true if this cluster instance has be shutdown.


subscribe

public void subscribe(ActorRef subscriber,
                      java.lang.Class<?> to)
Subscribe to cluster domain events. The to Class can be ClusterEvent.ClusterDomainEvent or subclass.

A snapshot of ClusterEvent.CurrentClusterState will be sent to the subscriber as the first event.


unsubscribe

public void unsubscribe(ActorRef subscriber)
Unsubscribe to all cluster domain events.


unsubscribe

public void unsubscribe(ActorRef subscriber,
                        java.lang.Class<?> to)
Unsubscribe to a specific type of cluster domain events, matching previous subscribe registration.


publishCurrentClusterState

public void publishCurrentClusterState()
Publish current (full) state of the cluster to subscribers, that are subscribing to ClusterEvent.ClusterDomainEvent or ClusterEvent.CurrentClusterState. If you want this to happen periodically you need to schedule a call to this method yourself.


sendCurrentClusterState

public void sendCurrentClusterState(ActorRef receiver)
Publish current (full) state of the cluster to the specified receiver. If you want this to happen periodically you need to schedule a call to this method yourself.


join

public void join(Address address)
Try to join this cluster node with the node specified by 'address'. A 'Join(selfAddress)' command is sent to the node to join.

An actor system can only join a cluster once. Additional attempts will be ignored. When it has successfully joined it must be restarted to be able to join another cluster or to join the same cluster again.


joinSeedNodes

public void joinSeedNodes(scala.collection.immutable.Seq<Address> seedNodes)
Join the specified seed nodes without defining them in config. Especially useful from tests when Addresses are unknown before startup time.

An actor system can only join a cluster once. Additional attempts will be ignored. When it has successfully joined it must be restarted to be able to join another cluster or to join the same cluster again.

JAVA API: Use akka.japi.Util.immutableSeq to convert a java.lang.Iterable to the type needed for the seedNodes parameter.


leave

public void leave(Address address)
Send command to issue state transition to LEAVING for the node specified by 'address'. The member will go through the status changes MemberStatus.Leaving (not published to subscribers) followed by MemberStatus.Exiting and finally MemberStatus.Removed.

Note that this command can be issued to any member in the cluster, not necessarily the one that is leaving. The cluster extension, but not the actor system or JVM, of the leaving member will be shutdown after the leader has changed status of the member to Exiting. Thereafter the member will be removed from the cluster. Normally this is handled automatically, but in case of network failures during this process it might still be necessary to set the node’s status to Down in order to complete the removal.


down

public void down(Address address)
Send command to DOWN the node specified by 'address'.

When a member is considered by the failure detector to be unreachable the leader is not allowed to perform its duties, such as changing status of new joining members to 'Up'. The status of the unreachable member must be changed to 'Down', which can be done with this method.


registerOnMemberUp

public <T> void registerOnMemberUp(scala.Function0<T> code)
The supplied thunk will be run, once, when current cluster member is Up. Typically used together with configuration option akka.cluster.min-nr-of-members' to defer some action, such as starting actors, until the cluster has reached a certain size.


registerOnMemberUp

public void registerOnMemberUp(java.lang.Runnable callback)
Java API: The supplied callback will be run, once, when current cluster member is Up. Typically used together with configuration option akka.cluster.min-nr-of-members' to defer some action, such as starting actors, until the cluster has reached a certain size.


InfoLogger

public akka.cluster.Cluster.InfoLogger$ InfoLogger()
Accessor for nested Scala object