Class ShardCoordinator
- java.lang.Object
-
- akka.cluster.sharding.ShardCoordinator
-
- Direct Known Subclasses:
PersistentShardCoordinator
public abstract class ShardCoordinator extends java.lang.Object implements Actor, Timers
Singleton coordinator that decides where to allocate shards.- See Also:
ClusterSharding extension
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classShardCoordinator.AbstractShardAllocationStrategyJava API: Java implementations of custom shard allocation and rebalancing logic used by theShardCoordinatorshould extend this abstract class and overrideShardCoordinator.AbstractShardAllocationStrategy.allocateNewShard(akka.actor.ActorRef,java.lang.String,java.util.Map<akka.actor.ActorRef,scala.collection.immutable.IndexedSeq<java.lang.String>>)andrebalanceShard.static interfaceShardCoordinator.ActorSystemDependentAllocationStrategyShard allocation strategy where start is called by the shard coordinator before any calls to rebalance or allocate shard.static classShardCoordinator.Internal$INTERNAL APIstatic classShardCoordinator.LeastShardAllocationStrategyUseakka.cluster.sharding.ShardCoordinator.ShardAllocationStrategy.leastShardAllocationStrategyinstead.static classShardCoordinator.RebalanceWorker$static interfaceShardCoordinator.ShardAllocationStrategyInterface of the pluggable shard allocation and rebalancing logic used by theShardCoordinator.static classShardCoordinator.ShardAllocationStrategy$static interfaceShardCoordinator.StartableAllocationStrategyShard allocation strategy where start is called by the shard coordinator before any calls to rebalance or allocate shard.-
Nested classes/interfaces inherited from interface akka.actor.Actor
Actor.emptyBehavior$, Actor.ignoringBehavior$
-
-
Constructor Summary
Constructors Constructor Description ShardCoordinator(ClusterShardingSettings settings, ShardCoordinator.ShardAllocationStrategy allocationStrategy)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit>active()protected voidakka$actor$Actor$_setter_$context_$eq(ActorContext x$1)Scala API: Stores the context for this actor, including self, and sender.protected voidakka$actor$Actor$_setter_$self_$eq(ActorRef x$1)The 'self' field holds the ActorRef for this actor.scala.collection.immutable.Set<ActorRef>aliveRegions()voidaliveRegions_$eq(scala.collection.immutable.Set<ActorRef> x$1)voidallocateShardHomesForRememberEntities()booleanallRegionsRegistered()voidallRegionsRegistered_$eq(boolean x$1)Clustercluster()ActorContextcontext()Scala API: Stores the context for this actor, including self, and sender.voidcontinueGetShardHome(java.lang.String shard, ActorRef region, ActorRef getShardHomeSender)voidcontinueRebalance(scala.collection.immutable.Set<java.lang.String> shards)scala.collection.immutable.Set<ActorRef>gracefulShutdownInProgress()voidgracefulShutdownInProgress_$eq(scala.collection.immutable.Set<ActorRef> x$1)booleanhandleGetShardHome(java.lang.String shard)booleanhasAllRegionsRegistered()protected ActorRefignoreRef()booleanisMember(ActorRef region)static ShardCoordinator.ShardAllocationStrategyleastShardAllocationStrategy(int absoluteLimit, double relativeLimit)Java API:ShardAllocationStrategythat allocates new shards to theShardRegion(node) with least number of previously allocated shards.MarkerLoggingAdapterlog()intminMembers()voidpostStop()User overridable callback.booleanpreparingForShutdown()voidpreparingForShutdown_$eq(boolean x$1)voidpreStart()User overridable callback.scala.collection.immutable.Map<java.lang.String,scala.collection.immutable.Set<ActorRef>>rebalanceInProgress()voidrebalanceInProgress_$eq(scala.collection.immutable.Map<java.lang.String,scala.collection.immutable.Set<ActorRef>> x$1)scala.collection.immutable.Set<ActorRef>rebalanceWorkers()voidrebalanceWorkers_$eq(scala.collection.immutable.Set<ActorRef> x$1)scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit>receiveTerminated()voidregionProxyTerminated(ActorRef ref)voidregionTerminated(ActorRef ref)scala.collection.immutable.Set<ActorRef>regionTerminationInProgress()voidregionTerminationInProgress_$eq(scala.collection.immutable.Set<ActorRef> x$1)scala.concurrent.duration.FiniteDurationremovalMargin()ActorRefself()The 'self' field holds the ActorRef for this actor.voidsendHostShardMsg(java.lang.String shard, ActorRef region)voidshutdownShards(ActorRef shuttingDownRegion, scala.collection.immutable.Set<java.lang.String> shards)scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit>shuttingDown()akka.cluster.sharding.ShardCoordinator.Internal.Statestate()voidstate_$eq(akka.cluster.sharding.ShardCoordinator.Internal.State x$1)voidstateInitialized()protected abstract java.lang.StringtypeName()scala.collection.immutable.Map<java.lang.String,Cancellable>unAckedHostShards()voidunAckedHostShards_$eq(scala.collection.immutable.Map<java.lang.String,Cancellable> x$1)protected abstract voidunstashGetShardHomeRequestsForShard(java.lang.String shard)protected abstract voidunstashOneGetShardHomeRequest()abstract <E extends akka.cluster.sharding.ShardCoordinator.Internal.DomainEvent>
voidupdate(E evt, scala.Function1<E,scala.runtime.BoxedUnit> f)booleanwaitingForLocalRegionToTerminate()voidwaitingForLocalRegionToTerminate_$eq(boolean x$1)scala.collection.immutable.Map<java.lang.String,scala.collection.immutable.Set<scala.Tuple2<ActorRef,java.util.UUID>>>waitingForShardsToStop()voidwaitingForShardsToStop_$eq(scala.collection.immutable.Map<java.lang.String,scala.collection.immutable.Set<scala.Tuple2<ActorRef,java.util.UUID>>> x$1)voidwatchStateActors()-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface akka.actor.Actor
aroundPostRestart, aroundPreStart, postRestart, preRestart, receive, sender, supervisorStrategy, unhandled
-
Methods inherited from interface akka.actor.Timers
actorCell, aroundPostStop, aroundPreRestart, aroundReceive, super$aroundPostStop, super$aroundPreRestart, super$aroundReceive, timers
-
-
-
-
Constructor Detail
-
ShardCoordinator
public ShardCoordinator(ClusterShardingSettings settings, ShardCoordinator.ShardAllocationStrategy allocationStrategy)
-
-
Method Detail
-
leastShardAllocationStrategy
public static ShardCoordinator.ShardAllocationStrategy leastShardAllocationStrategy(int absoluteLimit, double relativeLimit)
Java API:ShardAllocationStrategythat allocates new shards to theShardRegion(node) with least number of previously allocated shards.When a node is added to the cluster the shards on the existing nodes will be rebalanced to the new node. The
LeastShardAllocationStrategypicks shards for rebalancing from theShardRegions with most number of previously allocated shards. They will then be allocated to theShardRegionwith least number of previously allocated shards, i.e. new members in the cluster. The amount of shards to rebalance in each round can be limited to make it progress slower since rebalancing too many shards at the same time could result in additional load on the system. For example, causing many Event Sourced entites to be started at the same time.It will not rebalance when there is already an ongoing rebalance in progress.
- Parameters:
absoluteLimit- the maximum number of shards that will be rebalanced in one rebalance roundrelativeLimit- fraction (< 1.0) of total number of (known) shards that will be rebalanced in one rebalance round
-
context
public ActorContext context()
Description copied from interface:ActorScala API: Stores the context for this actor, including self, and sender. It is implicit to support operations such asforward.WARNING: Only valid within the Actor itself, so do not close over it and publish it to other threads!
ActorContextis the Scala API.getContextreturns aAbstractActor.ActorContext, which is the Java API of the actor context.
-
self
public final ActorRef self()
Description copied from interface:ActorThe 'self' field holds the ActorRef for this actor. Can be used to send messages to itself:self ! message
-
akka$actor$Actor$_setter_$context_$eq
protected void akka$actor$Actor$_setter_$context_$eq(ActorContext x$1)
Description copied from interface:ActorScala API: Stores the context for this actor, including self, and sender. It is implicit to support operations such asforward.WARNING: Only valid within the Actor itself, so do not close over it and publish it to other threads!
ActorContextis the Scala API.getContextreturns aAbstractActor.ActorContext, which is the Java API of the actor context.- Specified by:
akka$actor$Actor$_setter_$context_$eqin interfaceActor
-
akka$actor$Actor$_setter_$self_$eq
protected final void akka$actor$Actor$_setter_$self_$eq(ActorRef x$1)
Description copied from interface:ActorThe 'self' field holds the ActorRef for this actor. Can be used to send messages to itself:self ! message
- Specified by:
akka$actor$Actor$_setter_$self_$eqin interfaceActor
-
log
public MarkerLoggingAdapter log()
-
ignoreRef
protected ActorRef ignoreRef()
-
cluster
public Cluster cluster()
-
removalMargin
public scala.concurrent.duration.FiniteDuration removalMargin()
-
minMembers
public int minMembers()
-
allRegionsRegistered
public boolean allRegionsRegistered()
-
allRegionsRegistered_$eq
public void allRegionsRegistered_$eq(boolean x$1)
-
state
public akka.cluster.sharding.ShardCoordinator.Internal.State state()
-
state_$eq
public void state_$eq(akka.cluster.sharding.ShardCoordinator.Internal.State x$1)
-
preparingForShutdown
public boolean preparingForShutdown()
-
preparingForShutdown_$eq
public void preparingForShutdown_$eq(boolean x$1)
-
rebalanceInProgress
public scala.collection.immutable.Map<java.lang.String,scala.collection.immutable.Set<ActorRef>> rebalanceInProgress()
-
rebalanceInProgress_$eq
public void rebalanceInProgress_$eq(scala.collection.immutable.Map<java.lang.String,scala.collection.immutable.Set<ActorRef>> x$1)
-
rebalanceWorkers
public scala.collection.immutable.Set<ActorRef> rebalanceWorkers()
-
rebalanceWorkers_$eq
public void rebalanceWorkers_$eq(scala.collection.immutable.Set<ActorRef> x$1)
-
unAckedHostShards
public scala.collection.immutable.Map<java.lang.String,Cancellable> unAckedHostShards()
-
unAckedHostShards_$eq
public void unAckedHostShards_$eq(scala.collection.immutable.Map<java.lang.String,Cancellable> x$1)
-
gracefulShutdownInProgress
public scala.collection.immutable.Set<ActorRef> gracefulShutdownInProgress()
-
gracefulShutdownInProgress_$eq
public void gracefulShutdownInProgress_$eq(scala.collection.immutable.Set<ActorRef> x$1)
-
waitingForLocalRegionToTerminate
public boolean waitingForLocalRegionToTerminate()
-
waitingForLocalRegionToTerminate_$eq
public void waitingForLocalRegionToTerminate_$eq(boolean x$1)
-
aliveRegions
public scala.collection.immutable.Set<ActorRef> aliveRegions()
-
aliveRegions_$eq
public void aliveRegions_$eq(scala.collection.immutable.Set<ActorRef> x$1)
-
regionTerminationInProgress
public scala.collection.immutable.Set<ActorRef> regionTerminationInProgress()
-
regionTerminationInProgress_$eq
public void regionTerminationInProgress_$eq(scala.collection.immutable.Set<ActorRef> x$1)
-
waitingForShardsToStop
public scala.collection.immutable.Map<java.lang.String,scala.collection.immutable.Set<scala.Tuple2<ActorRef,java.util.UUID>>> waitingForShardsToStop()
-
waitingForShardsToStop_$eq
public void waitingForShardsToStop_$eq(scala.collection.immutable.Map<java.lang.String,scala.collection.immutable.Set<scala.Tuple2<ActorRef,java.util.UUID>>> x$1)
-
typeName
protected abstract java.lang.String typeName()
-
preStart
public void preStart()
Description copied from interface:ActorUser overridable callback. Is called when an Actor is started. Actors are automatically started asynchronously when created. Empty default implementation.
-
postStop
public void postStop()
Description copied from interface:ActorUser overridable callback. Is called asynchronously after 'actor.stop()' is invoked. Empty default implementation.
-
isMember
public boolean isMember(ActorRef region)
-
active
public scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit> active()
-
handleGetShardHome
public boolean handleGetShardHome(java.lang.String shard)
- Returns:
trueif the message could be handled without state update, i.e. the shard location was known or the request was deferred or ignored
-
receiveTerminated
public scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit> receiveTerminated()
-
update
public abstract <E extends akka.cluster.sharding.ShardCoordinator.Internal.DomainEvent> void update(E evt, scala.Function1<E,scala.runtime.BoxedUnit> f)
-
watchStateActors
public void watchStateActors()
-
stateInitialized
public void stateInitialized()
-
hasAllRegionsRegistered
public boolean hasAllRegionsRegistered()
-
regionTerminated
public void regionTerminated(ActorRef ref)
-
regionProxyTerminated
public void regionProxyTerminated(ActorRef ref)
-
shuttingDown
public scala.PartialFunction<java.lang.Object,scala.runtime.BoxedUnit> shuttingDown()
-
sendHostShardMsg
public void sendHostShardMsg(java.lang.String shard, ActorRef region)
-
allocateShardHomesForRememberEntities
public void allocateShardHomesForRememberEntities()
-
continueGetShardHome
public void continueGetShardHome(java.lang.String shard, ActorRef region, ActorRef getShardHomeSender)
-
unstashOneGetShardHomeRequest
protected abstract void unstashOneGetShardHomeRequest()
-
unstashGetShardHomeRequestsForShard
protected abstract void unstashGetShardHomeRequestsForShard(java.lang.String shard)
-
continueRebalance
public void continueRebalance(scala.collection.immutable.Set<java.lang.String> shards)
-
shutdownShards
public void shutdownShards(ActorRef shuttingDownRegion, scala.collection.immutable.Set<java.lang.String> shards)
-
-