Force在本地JVM上的Akka中创建本地actor

时间:2018-06-11 13:31:09

标签: akka

如何在Akka中强制在本地JVM(非远程)上创建一个actor?这个参数是否可以传递给create函数或需要设置的配置?

2 个答案:

答案 0 :(得分:1)

AKKA设计不会让您担心。

{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中进行特殊配置,则无需担心,有关详细信息,您可以参考akka guide

答案 1 :(得分:0)

使用如下所示的道具方法创建一个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());