Cluster Communication | How to get an ActorPath including IP & Port

92 Views Asked by At

On the same JVM from the Akka example code can we set

"replyTo" via context.self.

final case class Greet(whom: String, replyTo: ActorRef[Greeted])

But to be able to address an actor on another JVM do I exepct an ActorRef like: Actor[akka://[email protected]:25520/user/supervisor#1566727323]

In order to get such an ActorRef did I tried following without success:

context.self: Actor[akka://shakto/user/supervisor#-893416855] | -> Type: ActorRef -> no IP & Port
context.self.ref: Actor[akka://shakto/user/supervisor#-893416855] | -> Type: ActorRef -> no IP & Port
context.self.path: akka://shakto/user/supervisor | -> Wrong Type: ActorPath 
Cluster(context.system).selfMember.address: akka://[email protected]:25520 | -> Wrong Type: Address 
Cluster(context.system).selfMember: Member(address = akka://[email protected]:25520, status = Up) | -> Wrong Type: Member
Cluster(context.system).selfMember.uniqueAddress: UniqueAddress(akka://[email protected]:25520,7005817905428950198) | -> Wrong Type: UniqueAddress 
DistributedData(context.system).selfUniqueAddress: SelfUniqueAddress(UniqueAddress(akka://[email protected]:25520,7005817905428950198)) | -> Wrong Type: SelfUniqueAddress 

How can I get an full ActorRef including IP & Port from inside the actor which I can then pass as "replyTo" to allow different nodes on different JVM's to use this ActorRef to reply back to me inside the same Cluster?


1

There are 1 best solutions below

1
On BEST ANSWER

Have you gone through this page? https://doc.akka.io/docs/akka/current/typed/actor-discovery.html

Recommended way to communicated with remote actor is using akka cluster and Receptionist.

Are you using akka-remote?