2016-06-28 2 views
0

В моих модульных тестах я запускаю удаленную систему актеров на localhost с портом 0. Я не хочу, чтобы тесты пытались привязать к используемому порту. Соответствующий Akka конфигурация является:Порт привязки Akka Netty 0

actor { 
    provider = "akka.remote.RemoteActorRefProvider" 
    } 
    remote { 
    enabled-transports = ["akka.remote.netty.tcp"] 
    netty.tcp { 
     hostname = "localhost" 
     port = 0 
    } 
    } 

Как задать Акку или Нетти, какой порт был связан так, что я могу создать клиент правильно?

ответ

1

Я просто начинающий ака. Надеюсь, этот пример поможет.

import akka.actor._ 

object HelloRemote extends App { 
    val system = ActorSystem("HelloRemoteSystem") 
    val remoteActor = system.actorOf(Props[RemoteActor], name = "RemoteActor") 
    remoteActor ! "The RemoteActor is alive" 

    val port = system.asInstanceOf[ExtendedActorSystem].provider.getDefaultAddress.port.get 
    println(s"RemoteActor port '$port'") 
} 

class RemoteActor extends Actor { 
    def receive = { 
    case msg: String => 
     println(s"RemoteActor received message '$msg'") 
     sender ! "Hello from the RemoteActor" 
    } 
} 
+0

Депонирование одного до голосования, пока я не смогу на самом деле проверить. спасибо за Ваш ответ! – Samuel

+0

он сделал трюк. еще раз спасибо – Samuel