* Introduced RouterContext which is a subset of
ActorContext that makes sense for RouteeProvider
to use.
* It's not possible (without major rethinking) to
create routees by sending message to the Router
actor because we rely on immediate return of ActorRef
* Removed need for extra actor that subscribes to cluster
events
* ClusterRouterActor is the router actor and aslo subscribes
* Less scary initialization, and safe calls to createRoutees
* Intercept ClusterDomainEvent to route them to ClusterRouterActor
instead of to the routees
* Ordinary withRouther withDeploy is TOO ugly for this
* Implicit conversion adds withClusterRouter to Props
for Scala API
* Helper method in ClusterRouterPropsDecorator for Java API
* Config max-nr-of-instances-per-node
* selectDeploymentTarget that takes max-nr-of-instances-per-node
and nr-of-instances into account
* Deploy when new member added or removed
* Moved routeeProps to RouteeProvider constructor, needed for
this feature, but also simplifies createRoute, createRoutee,
and resize, since routeeProps doesn't have to be passed around.
* createRoutees only for new nrOfInstances
* createRoutees also registers
* New registerRouteesFor for path lookup
* removeRoutees to gracefully unregister and stop routee
* We will write more tests that rely on real Cluster(system) extension,
such as ClusterRoundRobinRoutedActorSpec
* When not using FailureDetectorStrategy or overriding seed nodes
MultiNodeClusterSpec will use the real Cluster(system) extension
instead of a new Cluster instance with additional test facilities
* Sample app, akka-sample-cluster
* Preparing Your Project for Clustering
* A Simple Cluster Example
* Automatic vs. Manual Joining
* Automatic vs. Manual Downing
* Configuration
* Use withFallback to use Resizer specified in code if not configured
* Use withFallback in RemoteRouterConfig also
* Fix bug of child name in RemoteRouteeProvider
the previous patch of including the UID in the Terminated message did
suffer from the system vs. normal message ordering problem, hence I
reverted the previous fix and replaced it by sending a NullMessage after
ChildTerminated, exactly like in the Supervise case.
* Defined the domain events in ClusterEvent.scala file
* Produce events from diff and publish publish to event bus
from separate actor, ClusterDomainEventPublisher
* Adjustments of tests