2016-03-31 14 views
2

Ich habe einen Java-Client, der einen automatisch generierten Port erhält. Nach dem Starten des Actor-Systems möchte ich auf den Port zugreifen.Akka Remote: get automatisch generierten Port

Config clientConfig = ConfigFactory.parseString("akka.remote.netty.tcp.port = 0") 
     .withFallback(ConfigFactory.parseString("akka.remote.netty.tcp.hostname = " + serverHostName)) 
     .withFallback(ConfigFactory.load("common")); 

actorSystem = ActorSystem.create("clientActorSystem", clientConfig); 

// how to access the generated port here..!? 

Der Port muss bereits eingestellt werden, da die Protokollausgabe nach ActorSystem.create(...) wie das ist:

[INFO] [03/31/2016 14:11:32.042] [main] [akka.remote.Remoting] Starting remoting 
[INFO] [03/31/2016 14:11:32.233] [main] [akka.remote.Remoting] Remoting started; listening on addresses :[akka.tcp://[email protected]:58735] 
[INFO] [03/31/2016 14:11:32.234] [main] [akka.remote.Remoting] Remoting now listens on addresses: [akka.tcp://[email protected]:58735] 

Wenn ich versuche es über die Konfiguration mit actorSystem.settings().config().getValue("akka.remote.netty.tcp.port") zu bekommen, ich vorher definiert noch 0 erhalten.

Hat jemand eine Idee, wie dieser Port (58735 in dem Beispiel) zugegriffen werden kann?

Antwort

1

scala Verwenden Sie Option von Port erhalten, auf dem Schauspieler System gerade läuft:

val port = system.provider.getDefaultAddress.port 

Hoffnung Sie in der Lage sein wird, den gleichen Code in Java zu erhalten.

+0

Danke Danny! Das hat auch in Java funktioniert :-) – oustriem

Verwandte Themen