2014-02-12 3 views
2

Пульт дистанционного управления Система: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] теперь помещен на карантин, все сообщения на этот адрес будут доставлены мертвым буквам.

ответ

1

Ваш мастер ожидает, что работник будет прослушивать 127.0.0.1, но рабочий прослушивается по адресу компьютера по умолчанию.

+0

Даже если я установил host = "" в конфигурацию приложения, которая принимает адрес по умолчанию, рабочий получает карантин. –

+0

Пожалуйста, внимательно прочитайте этот первый раздел: http://doc.akka.io/docs/akka/2.2.3/java/remoting.html#Preparing_your_ActorSystem_for_Remoting (особенно о настройке имени хоста, это относится ко всем узлам вашей настройки удаленного доступа) –