强制在本地JVM上的Akka中创建本地参与者

强制在本地JVM上的Akka中创建本地参与者,akka,Akka,如何在Akka的本地JVM(而不是远程JVM)上强制创建参与者?这是一个可以传递给create函数的参数,还是需要设置的配置?使用下面的props方法创建一个Actor public class MyActor extends AbstractActor { @Override public Receive createReceive() { return ReceiveBuilder.create() .match(Order.

如何在Akka的本地JVM(而不是远程JVM)上强制创建参与者?这是一个可以传递给create函数的参数,还是需要设置的配置?

使用下面的props方法创建一个Actor

public class MyActor extends AbstractActor {

    @Override
    public Receive createReceive() {
        return ReceiveBuilder.create()
                .match(Order.class, this::handleMessage)
                .build();
    }

    static Props props() {
        return Props.create(MyActor.class);
    }

    private void handleMessage(String e)
    {
        //do something with the string
    }

}
然后可以使用创建子ActorRef

ActorRef childRef=actorSystem.actorOf(MyActor.props(),“MyActor”)

并向它发送消息,如下所示

childRef.tell(myMessage,self());

通过
AKKA
design,您的担忧不会发生

默认情况下,
actorOf
只会在本地节点的
actorsystem
上设置actor,即使您处于集群或远程模式,它也不会尝试在远程节点上设置actor

如果要在远程系统上设置actor,则必须明确执行以下操作:

application.conf

akka {
  actor {
    deployment {
      /sampleActor {
        remote = "akka.tcp://sampleActorSystem@10.192.225.100:2553"
      }
    }
  }
}
test.scala

val actor = system.actorOf(Props[SampleActor], "sampleActor")
只有在上述配置下,
actorsystem
才会在远程系统上设置新的actor


无论如何,如果您不在
application.conf
中进行特殊配置,您的担心就不存在了,您可以参考详细信息

您能详细说明您正在尝试做什么吗?默认情况下,参与者是在本地创建的。我想在本地JVM上本地创建一个参与者,我不想在远程JVM上创建,因为我在集群Akka模式中,即使在远程碎片上创建参与者,这难道不是创建参与者的标准方法吗?如果要在远程计算机上创建代码,该代码将如何更改?