У меня странное поведение на моем проекте Акка.Подводя итог: у меня есть две Actorsystems, работающие на моей хост-системе, и я хочу соединяться друг с другом для отправки сообщений.Теперь проблема в том, что когда я использую следующую конфигурацию akka на моем клиенте:
akka {
actor {
provider = remote
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = "127.0.0.1"
port = 0
}
}
}
и следующее на моей серверной системе актеров:
akka {
loglevel = "INFO"
actor {
provider = "akka.remote.RemoteActorRefProvider"
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = "127.0.0.1"
port = 5150
}
log-sent-messages = on
log-received-messages = on
}
}
Я не могу подключиться к моей серверной системе актеров с помощьюactorselection выглядит следующим образом:
val selection = context.actorSelection("akka.tcp://ServerSystem@0.0.0.0:5150/user/receiver")
Я ожидаю, что он будет работать с подстановочным IP-адресом, поскольку это означает, что он пытался подключиться к каждому IPv4, который имеет хост-система.Я получаю следующую ошибку:
[WARN] [05/06/2019 08:57:03.738] [New I/O boss #3] [NettyTransport(akka://ClientSystem)] Remote connection to [null] failed with java.net.ConnectException: Connection refused: no further information: /0.0.0.0:5150
[WARN] [05/06/2019 08:57:03.738] [ClientSystem-akka.remote.default-remote-dispatcher-13] [akka.tcp://ClientSystem@127.0.0.1:8346/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2FServerSystem%400.0.0.0%3A5150-0] Association with remote system [akka.tcp://ServerSystem@0.0.0.0:5150] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://ServerSystem@0.0.0.0:5150]] Caused by: [java.net.ConnectException: Connection refused: no further information: /0.0.0.0:5150]
С другой стороны, все работает нормально, если я изменяю 127.0.0.1 в конфигурации сервера на 0.0.0.0, когда я запускаю его внутри контейнера докера и подключаюсь к немуиспользуя адрес 0.0.0.0 в выборе актера на моем клиенте, который работает на хосте.Так что здесь, кажется, работает связывание и подключение к подстановочному IP.
У кого-нибудь есть объяснение этому поведению?