Пульт дистанционного управления Система:Akka Пульт дистанционного управления/Рабочие разъединения и карантину
Код:
private final ActorRef reaper = getContext().actorOf(Props.create(Reaper.class), "reaper");
private final ActorRef router = getContext().actorOf(Props.create(Worker.class).withRouter(new RemoteRouterConfig(new RoundRobinRouter(10), getNodes())), "router");
getnodes() является List<Address>
application.conf:
akka {
log-dead-letters-during-shutdown = off
actor {
provider = "akka.remote.RemoteActorRefProvider"
remote {
enabled-transports = ["akka.remote.netty.tcp"]
transport-failure-detector {
acceptable-heartbeat-pause = 100s
}
watch-failure-detector {
acceptable-heartbeat-pause = 100s
}
netty.tcp {
hostname = "127.0.0.1"
port = 2552
}
}
}
}
Remote Рабочая система: Код:
private ActorSystem system;
public RemoteWorker(String name) {
Config conf = ConfigFactory.load("remote");
int port = conf.getInt("akka.remote.netty.tcp.port");
system = ActorSystem.create(name, conf);
}
private void handleShutdown() {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override public void run() {
System.out.println("Shutting down remote actor system...");
system.shutdown();
}
});
}
public static void main(String[] args) {
String systemName = (args.length == 0) ? "remote" : args[0];
RemoteWorker remsys = new RemoteWorker(systemName);
remsys.handleShutdown();
}
remote.conf
akka {
log-dead-letters-during-shutdown = off
actor {
provider = "akka.remote.RemoteActorRefProvider"
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = ""
port = 2553
}
}
}
Ошибка: [WARN] [02/11/2014 14: 50: 26,728] [удаленный-akka.actor.default-диспетчерская-17] [Akka: //..../system/remote-watcher] Обнаружено недостижимое: [akka.tcp: //[email protected]: 2553] [INFO] [02/11/2014 14: 50: 26.728] [remote- akka.actor.default-dispatcher-15] [Remoting] Адрес [akka.tcp: //[email protected]: 2553] теперь помещен на карантин, все сообщения на этот адрес будут доставлены мертвым буквам.
Даже если я установил host = "" в конфигурацию приложения, которая принимает адрес по умолчанию, рабочий получает карантин. –
Пожалуйста, внимательно прочитайте этот первый раздел: http://doc.akka.io/docs/akka/2.2.3/java/remoting.html#Preparing_your_ActorSystem_for_Remoting (особенно о настройке имени хоста, это относится ко всем узлам вашей настройки удаленного доступа) –