TL; DR: я не могу соединить двух актеров в двух разных сетях.
Привет всем!
Я отчаянно пытаюсь создать приложение, требующее двух актеровЯ использую две разные сети для обмена сообщениями, а не на localhost.
Я пытаюсь создать простого актера с .conf, который позволяет получать доступ из Интернета, следуя документам Акки, но явсегда получаю ошибки.
Это .conf, который я использовал:
akka {
actor {
provider = remote
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = [my public ip]
port = 2552
}
}
}
Но компилятор выдает следующее исключение:
[INFO] [09/13/2018 18:33:10.300] [main] [akka.remote.Remoting] Starting remoting
[ERROR] [09/13/2018 18:33:10.744] [TestActor-akka.remote.default-remote-dispatcher-8] [NettyTransport(akka://TestActor)] failed to bind to /[my local ip]:8000, shutting down Netty transport
[ERROR] [09/13/2018 18:33:10.756] [main] [akka.remote.Remoting] Remoting error: [Startup failed] [
akka.remote.RemoteTransportException: Startup failed
at akka.remote.Remoting.akka$remote$Remoting$$notifyError(Remoting.scala:148)
at akka.remote.Remoting.start(Remoting.scala:214)
at akka.remote.RemoteActorRefProvider.init(RemoteActorRefProvider.scala:222)
at akka.actor.ActorSystemImpl.liftedTree2$1(ActorSystem.scala:840)
Я также пробовал с:
akka {
remote {
netty.tcp {
hostname = [my public ip] # external (logical) hostname
port = 8000 # external (logical) port
bind-hostname = [my local ip] # internal (bind) hostname
bind-port = 2552 # internal (bind) port
}
}
}
В этом случае работает первый актер, но я не могу связаться с ним от другого актера в другой сети.Когда я пытаюсь достичь этого с помощью
val server = system.actorSelection("akka.tcp://TestActor@[my public ip]:8000/user/serv")
, я получаю сообщение об ошибке, и ничего больше не происходит.
Любая идея / руководство / учебное пособие о том, как заставить эту систему работать?