akka.contrib.pattern
Interface ShardCoordinator.ShardAllocationStrategy

All Superinterfaces:
NoSerializationVerificationNeeded
All Known Implementing Classes:
ShardCoordinator.AbstractShardAllocationStrategy, ShardCoordinator.LeastShardAllocationStrategy
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
 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.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

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 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:
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

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 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:
the shards to be migrated, may be empty to skip rebalance in this round