* Config of node roles cluster.role
* Cluster router configurable with use-role
* RoleLeaderChanged event
* Cluster singleton per role
* Cluster only starts once all required per-role node
counts are reached,
role.<role-name>.min-nr-of-members config
* Update documentation and make use of the roles in the examples
* This also removes the need for the withClusterRouter sugar
* Improved the apply and constructors for ClusterRouterSettings, since
that will be user api instead
* 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