2016-03-31 7 views
2

У меня есть клиент Java, который получает автогенерированный порт. После запуска системы актеров я хочу получить доступ к порту.Akka Remote: получить автогенерированный порт

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..!? 

Порт должен быть уже установлен, так как выход журнала после ActorSystem.create(...) как то:

[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] 

Если я пытаюсь получить его с помощью конфигурации с actorSystem.settings().config().getValue("akka.remote.netty.tcp.port"), я все еще получаю 0, как определено ранее.

Есть ли у кого-нибудь представление о том, как можно использовать этот порт (58735 в примере)?

ответ

1

Используя Scala, вы можете получить вариант порта, на котором система Актера в настоящее время работает:

val port = system.provider.getDefaultAddress.port 

Надеется, что вы будете иметь возможность получить тот же код в Java.

+0

Спасибо Дэнни! Это тоже работало на Java :-) – oustriem

 Смежные вопросы

  • Нет связанных вопросов^_^