#scala #akka #akka-typed
#scala #akka #типизированный akka
Вопрос:
На той же JVM из примера кода Akka можем ли мы установить
"replyTo" via context.self.
final case class Greet(whom: String, replyTo: ActorRef[Greeted])
Но чтобы иметь возможность обращаться к субъекту на другой виртуальной машине, должен ли я использовать ActorRef, например:
Actor[akka://shakto@172.31.19.110:25520/user/supervisor#1566727323]
Чтобы получить такой ActorRef, я безуспешно пытался следовать:
context.self: Actor[akka://shakto/user/supervisor#-893416855] | -> Type: ActorRef -> no IP amp; Port
context.self.ref: Actor[akka://shakto/user/supervisor#-893416855] | -> Type: ActorRef -> no IP amp; Port
context.self.path: akka://shakto/user/supervisor | -> Wrong Type: ActorPath
Cluster(context.system).selfMember.address: akka://shakto@172.31.17.16:25520 | -> Wrong Type: Address
Cluster(context.system).selfMember: Member(address = akka://shakto@172.31.17.16:25520, status = Up) | -> Wrong Type: Member
Cluster(context.system).selfMember.uniqueAddress: UniqueAddress(akka://shakto@172.31.17.16:25520,7005817905428950198) | -> Wrong Type: UniqueAddress
DistributedData(context.system).selfUniqueAddress: SelfUniqueAddress(UniqueAddress(akka://shakto@172.31.17.16:25520,7005817905428950198)) | -> Wrong Type: SelfUniqueAddress
Как я могу получить полный ActorRef, включая IP и порт, изнутри субъекта, который я затем могу передать как «replyTo», чтобы позволить разным узлам на разных JVM использовать этот ActorRef для ответа мне внутри того же кластера?
Ответ №1:
Вы просматривали эту страницу? https://doc.akka.io/docs/akka/current/typed/actor-discovery.html
Рекомендуемый способ связи с удаленным субъектом — использование кластера akka и Администратора.
Используете ли вы akka-remote?
Комментарии:
1. Спасибо вам за ваш ответ. Да, я пользуюсь услугами администратора, но, снова прочитав документацию, обнаружил свою ошибку в другом месте. context.self работает в сочетании с Администратором.