akka.contrib.pattern
Class ShardCoordinator.AbstractShardAllocationStrategy

java.lang.Object
  extended by akka.contrib.pattern.ShardCoordinator.AbstractShardAllocationStrategy
All Implemented Interfaces:
NoSerializationVerificationNeeded, ShardCoordinator.ShardAllocationStrategy
Enclosing class:
ShardCoordinator

public abstract static class ShardCoordinator.AbstractShardAllocationStrategy
extends java.lang.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
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.
abstract  ActorRef allocateShard(ActorRef requester, java.lang.String shardId, java.util.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.
abstract  java.util.Set<java.lang.String> rebalance(java.util.Map<ActorRef,scala.collection.immutable.IndexedSeq<java.lang.String>> currentShardAllocations, java.util.Set<java.lang.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 Detail

ShardCoordinator.AbstractShardAllocationStrategy

public ShardCoordinator.AbstractShardAllocationStrategy()
Method Detail

allocateShard

public final ActorRef allocateShard(ActorRef requester,
                                    java.lang.String shardId,
                                    scala.collection.immutable.Map<ActorRef,scala.collection.immutable.IndexedSeq<java.lang.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:
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.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)
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:
the shards to be migrated, may be empty to skip rebalance in this round

allocateShard

public abstract ActorRef allocateShard(ActorRef requester,
                                       java.lang.String shardId,
                                       java.util.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

public abstract java.util.Set<java.lang.String> rebalance(java.util.Map<ActorRef,scala.collection.immutable.IndexedSeq<java.lang.String>> currentShardAllocations,
                                                          java.util.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