Class ExternalShardAllocationStrategy
java.lang.Object
org.apache.pekko.cluster.sharding.external.ExternalShardAllocationStrategy
- All Implemented Interfaces:
NoSerializationVerificationNeeded,ShardCoordinator.ShardAllocationStrategy,ShardCoordinator.StartableAllocationStrategy
public class ExternalShardAllocationStrategy
extends Object
implements ShardCoordinator.StartableAllocationStrategy
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic classstatic classstatic classstatic final classstatic class -
Constructor Summary
ConstructorsConstructorDescriptionExternalShardAllocationStrategy(ClassicActorSystemProvider systemProvider, String typeName, Timeout timeout) -
Method Summary
Modifier and TypeMethodDescriptionstatic Timeout$lessinit$greater$default$3(ClassicActorSystemProvider systemProvider, String typeName) Java API: Create anExternalShardAllocationStrategyscala.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.apply(ClassicActorSystemProvider systemProvider, String typeName) Create anExternalShardAllocationStrategyapply(ClassicActorSystemProvider systemProvider, String typeName, scala.concurrent.duration.FiniteDuration timeout) Scala API: Create anExternalShardAllocationStrategycreate(ClassicActorSystemProvider systemProvider, String typeName, Duration timeout) Java API: Create anExternalShardAllocationStrategyscala.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.voidstart()Called before any calls to allocate/rebalance.timeout()
-
Constructor Details
-
ExternalShardAllocationStrategy
public ExternalShardAllocationStrategy(ClassicActorSystemProvider systemProvider, String typeName, Timeout timeout)
-
-
Method Details
-
$lessinit$greater$default$3
public static Timeout $lessinit$greater$default$3(ClassicActorSystemProvider systemProvider, String typeName) Java API: Create anExternalShardAllocationStrategy -
apply
public static ExternalShardAllocationStrategy apply(ClassicActorSystemProvider systemProvider, String typeName) Create anExternalShardAllocationStrategy -
apply
public static ExternalShardAllocationStrategy apply(ClassicActorSystemProvider systemProvider, String typeName, scala.concurrent.duration.FiniteDuration timeout) Scala API: Create anExternalShardAllocationStrategy -
create
public static ExternalShardAllocationStrategy create(ClassicActorSystemProvider systemProvider, String typeName, Duration timeout) Java API: Create anExternalShardAllocationStrategy -
timeout
-
start
public void start()Description copied from interface:ShardCoordinator.StartableAllocationStrategyCalled before any calls to allocate/rebalance. Do not block. If asynchronous actions are required they can be started here and delay the Futures returned by allocate/rebalance.- Specified by:
startin interfaceShardCoordinator.StartableAllocationStrategy
-
allocateShard
public scala.concurrent.Future<ActorRef> allocateShard(ActorRef requester, String shardId, scala.collection.immutable.Map<ActorRef, scala.collection.immutable.IndexedSeq<String>> currentShardAllocations) Description copied from interface:ShardCoordinator.ShardAllocationStrategyInvoked when the location of a new shard is to be decided.- Specified by:
allocateShardin interfaceShardCoordinator.ShardAllocationStrategy- 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
public 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) Description copied from interface:ShardCoordinator.ShardAllocationStrategyInvoked periodically to decide which shards to rebalance to another location.- Specified by:
rebalancein interfaceShardCoordinator.ShardAllocationStrategy- 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
-