Class ShardCoordinator.AbstractShardAllocationStrategy

java.lang.Object
org.apache.pekko.cluster.sharding.ShardCoordinator.AbstractShardAllocationStrategy
All Implemented Interfaces:
NoSerializationVerificationNeeded, ShardCoordinator.ShardAllocationStrategy
Enclosing class:
ShardCoordinator

public abstract static class ShardCoordinator.AbstractShardAllocationStrategy extends Object implements ShardCoordinator.ShardAllocationStrategy
Java API: Java implementations of custom shard allocation and rebalancing logic used by the ShardCoordinator should extend this abstract class and implement the two methods.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    abstract scala.concurrent.Future<ActorRef>
    allocateShard(ActorRef requester, String shardId, Map<ActorRef,scala.collection.immutable.IndexedSeq<String>> currentShardAllocations)
    Invoked when the location of a new shard is to be decided.
    final 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.
    abstract scala.concurrent.Future<Set<String>>
    rebalance(Map<ActorRef,scala.collection.immutable.IndexedSeq<String>> currentShardAllocations, Set<String> rebalanceInProgress)
    Invoked periodically to decide which shards to rebalance to another location.
    final 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.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • AbstractShardAllocationStrategy

      public AbstractShardAllocationStrategy()
  • Method Details

    • allocateShard

      public final 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.ShardAllocationStrategy
      Invoked when the location of a new shard is to be decided.

      Specified by:
      allocateShard in interface ShardCoordinator.ShardAllocationStrategy
      Parameters:
      requester - actor reference to the ShardRegion that requested the location of the shard, can be returned if preference should be given to the node where the shard was first accessed
      shardId - the id of the shard to allocate
      currentShardAllocations - all actor refs to ShardRegion and their current allocated shards, in the order they were allocated
      Returns:
      a Future of the actor ref of the ShardRegion that is to be responsible for the shard, must be one of the references included in the currentShardAllocations parameter
    • allocateShard

      public abstract scala.concurrent.Future<ActorRef> allocateShard(ActorRef requester, String shardId, 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 the ShardRegion that requested the location of the shard, can be returned if preference should be given to the node where the shard was first accessed
      shardId - the id of the shard to allocate
      currentShardAllocations - all actor refs to ShardRegion and their current allocated shards, in the order they were allocated
      Returns:
      a Future of the actor ref of the ShardRegion that is to be responsible for the shard, must be one of the references included in the currentShardAllocations parameter
    • rebalance

      public final 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.ShardAllocationStrategy
      Invoked periodically to decide which shards to rebalance to another location.

      Specified by:
      rebalance in interface ShardCoordinator.ShardAllocationStrategy
      Parameters:
      currentShardAllocations - all actor refs to ShardRegion and their current allocated shards, in the order they were allocated
      rebalanceInProgress - 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
    • rebalance

      public abstract scala.concurrent.Future<Set<String>> rebalance(Map<ActorRef,scala.collection.immutable.IndexedSeq<String>> currentShardAllocations, Set<String> rebalanceInProgress)
      Invoked periodically to decide which shards to rebalance to another location.

      Parameters:
      currentShardAllocations - all actor refs to ShardRegion and their current allocated shards, in the order they were allocated
      rebalanceInProgress - 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