This class represents an ActorSystem extension used to create, monitor and manage a cluster of member nodes hosted within the actor system.
Domain events published to the event bus. Subscribe with:
var cluster = new Cluster(system); cluster.Subscribe(actorRef, typeof(IClusterDomainEvent));
Indicates that the Cluster plugin is shutting down.
A snapshot of the current state of the Cluster
Leader of the cluster members changed. Published when the state change is first seen on a node.
Member status changed to
MemberStatus.Down and will be removed
when all members have seen the
This class provides base functionality for defining state change events for cluster member nodes.
A member is considered as reachable by the failure detector after having been unreachable. ClusterEvent.UnreachableMember
First member (leader) of the members within a role set changed. Published when the state change is first seen on a node.
A member is considered as unreachable by the failure detector.
This class represents an ActorSystem provider used to create the cluster extension.
Exception thrown, when JoinAsync(Address, CancellationToken) or JoinSeedNodesAsync(IEnumerable<Address>, CancellationToken) fails to succeed.
This class represents a binding of an actor deployment to a cluster-aware system.
This class represents configuration information used when setting up a cluster.
Represents the address, current status, and roles of a cluster member node.
Default downing provider used when no provider is configured and 'auto-down-unreachable-after' is not enabled.
Member identifier consisting of address and random
uid is needed to be able to distinguish different
incarnations of a member with same hostname and port.
Representation of a Vector-based clock (counting clock), inspired by Lamport logical clocks.
- Leslie Lamport (1978). "Time, clocks, and the ordering of events in a distributed system". Communications of the ACM 21 (7): 558-565.
- Friedemann Mattern (1988). "Virtual Time and Global States of Distributed Systems". Workshop on Parallel and Distributed Algorithms: pp. 215-226
Based on code from the 'vlock' VectorClock library by Coda Hale.
Hash representation of a versioned node name.
Marker interface for cluster domain events
This interface marks a given class as a membership event. The event is published when the state change is first seen on a node. The state change was performed by the leader when there was convergence on the leader node, i.e. all members had seen previous state.
Base interface for all cluster messages. All ClusterMessage's are serializable.
API for plugins that will handle downing of cluster nodes. Concrete plugins must subclass and have a public one argument constructor accepting an ActorSystem.
The mode for getting the current state of the cluster upon first subscribing.
Defines the current status of a cluster member node
Can be one of: Joining, Up, WeaklyUp, Leaving, Exiting and Down.
Indicates the age of one VectorClock relative to another.