मैं नया हूँ करने के लिए अक्का remoting और मैं कोशिश कर रहा हूँ बस के लिए एक संदेश भेजने के लिए दूरदराज के एक अभिनेता और एक प्रतिक्रिया प्राप्त बदले में. मैं 2 अभिनेता सिस्टम पर स्थानीय होस्ट - अलग बंदरगाहों: MasterSystem और WorkerSystem. मैं बनाया है एक अभिनेता में WorkerSystem की कोशिश की और एक संदेश भेजने के लिए अपने दूरदराज के पते. लेकिन मैं रखने के लिए हो रही पर एक 'मृत पत्र का सामना करना पड़ा' संदेश! की सराहना करते हैं किसी भी मदद की है । धन्यवाद!
MainMaster.java
package pi_swarm_approx;
import akka.actor.ActorRef;
import akka.actor.ActorSelection;
import akka.actor.ActorSystem;
import akka.actor.UntypedActor;
import com.typesafe.config.ConfigFactory;
public class MainMaster extends UntypedActor{
ActorSystem system;
ActorRef actor;
ActorSelection remoteActor;
public MainMaster() {
system = ActorSystem.create("MasterSystem", ConfigFactory.load("master"));
System.out.println("MasterSystem created");
MainWorker mw = new MainWorker();
System.out.println("MainWorker obj created");
remoteActor = mw.system.actorSelection("akka://WorkerSystem@localhost:2552/user/workerActor");
System.out.println("Remote actor created");
remoteActor.tell("hello", getSelf());
System.out.println("Message sent to remote actor");
}
public void onReceive(Object msg) {
if (msg != null) {
System.out.println("Got it back");
}
else {
unhandled(msg);
getContext().stop(getSelf());
}
}
}
MainWorker.java
package pi_swarm_approx;
import akka.actor.ActorSystem;
import akka.actor.ActorRef;
import com.typesafe.config.ConfigFactory;
import akka.actor.Props;
public class MainWorker {
ActorSystem system;
ActorRef actor;
public MainWorker() {
this.system = ActorSystem.create("WorkerSystem", ConfigFactory.load("worker"));
actor = system.actorOf(Props.create(Worker.class), "workerActor");
}
}
Worker.java
package pi_swarm_approx;
import akka.actor.UntypedActor;
public class Worker extends UntypedActor {
public void onReceive(Object msg) {
System.out.println("Worker actor got message");
if (msg != null) {
getSender().tell("Request processed", getSelf());
}
else {
unhandled(msg);
}
getContext().stop(getSelf());
}
}
मास्टर.conf
akka {
actor {
provider = "cluster"
}
remote {
transport = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = "localhost"
port = 2551
}
}
clustering {
cluster.name = "MasterSystem"
role = "master"
}
}
कार्यकर्ता.conf
akka {
actor {
provider = "cluster"
deployment {
/workerActor {
remote = "akka.tcp://WorkerSystem@localhost:2552"
}
}
}
आउटपुट
In main
MasterSystem created
MainWorker obj created
Remote actor created
Message sent to remote actor
[INFO] [11/22/2021 16:01:34.531] [WorkerSystem-akka.actor.default-dispatcher-5] [akka://WorkerSystem/deadLetters] Message [java.lang.String] from Actor[akka://Main/user/app#402333018] to Actor[akka://WorkerSystem/deadLetters] was not delivered. [1] dead letters encountered. If this is not an expected behavior, then [Actor[akka://WorkerSystem/deadLetters]] may have terminated unexpectedly, This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
<=========----> 75% EXECUTING [18s]