Package akka.cluster.sharding
Interface ShardCoordinator.ShardAllocationStrategy
-
- All Superinterfaces:
NoSerializationVerificationNeeded
- All Known Subinterfaces:
ShardCoordinator.ActorSystemDependentAllocationStrategy
,ShardCoordinator.StartableAllocationStrategy
- All Known Implementing Classes:
ConsistentHashingShardAllocationStrategy
,ExternalShardAllocationStrategy
,ShardCoordinator.AbstractShardAllocationStrategy
,SliceRangeShardAllocationStrategy
- Enclosing class:
- ShardCoordinator
public static interface ShardCoordinator.ShardAllocationStrategy extends NoSerializationVerificationNeeded
Interface of the pluggable shard allocation and rebalancing logic used by theShardCoordinator
.Java implementations should extend
ShardCoordinator.AbstractShardAllocationStrategy
.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description scala.concurrent.Future<ActorRef>
allocateShard(ActorRef requester, java.lang.String shardId, scala.collection.immutable.Map<ActorRef,scala.collection.immutable.IndexedSeq<java.lang.String>> currentShardAllocations)
Invoked when the location of a new shard is to be decided.scala.concurrent.Future<scala.collection.immutable.Set<java.lang.String>>
rebalance(scala.collection.immutable.Map<ActorRef,scala.collection.immutable.IndexedSeq<java.lang.String>> currentShardAllocations, scala.collection.immutable.Set<java.lang.String> rebalanceInProgress)
Invoked periodically to decide which shards to rebalance to another location.
-
-
-
Method Detail
-
allocateShard
scala.concurrent.Future<ActorRef> allocateShard(ActorRef requester, java.lang.String shardId, scala.collection.immutable.Map<ActorRef,scala.collection.immutable.IndexedSeq<java.lang.String>> currentShardAllocations)
Invoked when the location of a new shard is to be decided.- Parameters:
requester
- actor reference to theShardRegion
that 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 toShardRegion
and their current allocated shards, in the order they were allocated- Returns:
- a
Future
of the actor ref of theShardRegion
that is to be responsible for the shard, must be one of the references included in thecurrentShardAllocations
parameter
-
rebalance
scala.concurrent.Future<scala.collection.immutable.Set<java.lang.String>> rebalance(scala.collection.immutable.Map<ActorRef,scala.collection.immutable.IndexedSeq<java.lang.String>> currentShardAllocations, scala.collection.immutable.Set<java.lang.String> rebalanceInProgress)
Invoked periodically to decide which shards to rebalance to another location.- Parameters:
currentShardAllocations
- all actor refs toShardRegion
and 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
Future
of the shards to be migrated, may be empty to skip rebalance in this round
-
-