* Separate routing logic, to be usable stand alone, e.g. in actors * Simplify RouterConfig, only a factory * Move reading of config from Deployer to the RouterConfig * Distiction between Pool and Group router types * Remove usage of actorFor, use ActorSelection * Management messages to add and remove routees * Simplify the internals of RoutedActorCell & co * Move resize specific code to separate RoutedActorCell subclass * Change resizer api to only return capacity change * Resizer only allowed together with Pool * Re-implement all routers, and keep old api during deprecation phase * Replace ClusterRouterConfig, deprecation * Rewrite documentation * Migration guide * Also includes related ticket: +act #3087 Create nicer Props factories for RouterConfig
58 lines
No EOL
1.3 KiB
Java
58 lines
No EOL
1.3 KiB
Java
/**
|
|
* Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com>
|
|
*/
|
|
package docs.jrouting;
|
|
|
|
//#group
|
|
import java.util.List;
|
|
|
|
import scala.Option;
|
|
import scala.collection.immutable.Iterable;
|
|
import akka.actor.ActorContext;
|
|
import akka.actor.ActorPath;
|
|
import akka.actor.ActorSystem;
|
|
import akka.actor.Props;
|
|
import akka.dispatch.Dispatchers;
|
|
import akka.routing.Group;
|
|
import akka.routing.Routee;
|
|
import akka.routing.Router;
|
|
import akka.routing.RouterActor;
|
|
import akka.routing.RouterConfig;
|
|
import akka.routing.RoutingLogic;
|
|
|
|
import com.typesafe.config.Config;
|
|
|
|
import akka.routing.GroupBase;
|
|
import static docs.jrouting.CustomRouterDocTest.RedundancyRoutingLogic;
|
|
|
|
public class RedundancyGroup extends GroupBase {
|
|
private final List<String> paths;
|
|
private final int nbrCopies;
|
|
|
|
public RedundancyGroup(List<String> paths, int nbrCopies) {
|
|
this.paths = paths;
|
|
this.nbrCopies = nbrCopies;
|
|
}
|
|
|
|
public RedundancyGroup(Config config) {
|
|
this(config.getStringList("routees.paths"),
|
|
config.getInt("nbr-copies"));
|
|
}
|
|
|
|
@Override
|
|
public java.lang.Iterable<String> getPaths() {
|
|
return paths;
|
|
}
|
|
|
|
@Override
|
|
public Router createRouter(ActorSystem system) {
|
|
return new Router(new RedundancyRoutingLogic(nbrCopies));
|
|
}
|
|
|
|
@Override
|
|
public String routerDispatcher() {
|
|
return Dispatchers.DefaultDispatcherId();
|
|
}
|
|
|
|
}
|
|
//#group |