如何在Akka中强制在本地JVM(非远程)上创建一个actor?这个参数是否可以传递给create函数或需要设置的配置?
答案 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());