Interface ShardCoordinator.ShardAllocationStrategy
- All Superinterfaces:
NoSerializationVerificationNeeded
- All Known Subinterfaces:
ShardCoordinator.ActorSystemDependentAllocationStrategy,ShardCoordinator.StartableAllocationStrategy
- All Known Implementing Classes:
ExternalShardAllocationStrategy,ShardCoordinator.AbstractShardAllocationStrategy
- Enclosing class:
- ShardCoordinator
public static interface ShardCoordinator.ShardAllocationStrategy
extends NoSerializationVerificationNeeded
Interface of the pluggable shard allocation and rebalancing logic used by the
ShardCoordinator.
Java implementations should extend ShardCoordinator.AbstractShardAllocationStrategy.
-
Method Summary
Modifier and TypeMethodDescriptionscala.concurrent.Future<ActorRef>allocateShard(ActorRef requester, String shardId, scala.collection.immutable.Map<ActorRef, scala.collection.immutable.IndexedSeq<String>> currentShardAllocations) Invoked when the location of a new shard is to be decided.scala.concurrent.Future<scala.collection.immutable.Set<String>>rebalance(scala.collection.immutable.Map<ActorRef, scala.collection.immutable.IndexedSeq<String>> currentShardAllocations, scala.collection.immutable.Set<String> rebalanceInProgress) Invoked periodically to decide which shards to rebalance to another location.
-
Method Details
-
allocateShard
scala.concurrent.Future<ActorRef> allocateShard(ActorRef requester, String shardId, scala.collection.immutable.Map<ActorRef, scala.collection.immutable.IndexedSeq<String>> currentShardAllocations) Invoked when the location of a new shard is to be decided.- Parameters:
requester- actor reference to theShardRegionthat requested the location of the shard, can be returned if preference should be given to the node where the shard was first accessedshardId- the id of the shard to allocatecurrentShardAllocations- all actor refs toShardRegionand their current allocated shards, in the order they were allocated- Returns:
- a
Futureof the actor ref of theShardRegionthat is to be responsible for the shard, must be one of the references included in thecurrentShardAllocationsparameter
-
rebalance
scala.concurrent.Future<scala.collection.immutable.Set<String>> rebalance(scala.collection.immutable.Map<ActorRef, scala.collection.immutable.IndexedSeq<String>> currentShardAllocations, scala.collection.immutable.Set<String> rebalanceInProgress) Invoked periodically to decide which shards to rebalance to another location.- Parameters:
currentShardAllocations- all actor refs toShardRegionand their current allocated shards, in the order they were allocatedrebalanceInProgress- set of shards that are currently being rebalanced, i.e. you should not include these in the returned set- Returns:
- a
Futureof the shards to be migrated, may be empty to skip rebalance in this round
-