Akka Props用法示例详解

本文概述

  • Akka Actor示例:使用Props
  • Akka Actor示例2:使用Props
Props是一个配置类, 用于在创建角色时指定选项。它是不可变的, 因此是线程安全的和可共享的。
你可以通过导入akka.actor.Props包来实现Props。
你可以通过将Props实例传递到ActorSystem和ActorContext中可用的actorOf()工厂方法来创建actor。 actorOf()方法返回ActorRef的实例。该实例是不可变的, 并且与它所代表的演员具有一对一的关系。 ActorRef也可序列化, 因此你可以对其进行序列化。
在下面的示例中, 我们将使用Props创建一个Actor。
Akka Actor示例:使用Props
import akka.actor.Actor; import akka.actor.ActorSystem; import akka.actor.Props; class PropsExample extends Actor { def receive= { case msg:String => println(msg+" "+self.path.name) } } object PropsMain{ def main(args:Array[String]){ var actorSystem = ActorSystem("ActorSystem"); var actor = actorSystem.actorOf(Props[PropsExample], "PropExample"); actor ! "Hello from" } }

输出
Hello from PropExample

还有多种其他方式来实现Props。让我们来看一个例子。
Akka Actor示例2:使用Props
import akka.actor._ class CreatingActor extends Actor{ def receive = { case msg:String => println(msg+" "+self.path.name)// Receiving message and name of actor } }object CreatingActorExample{ def main(args:Array[String]){ var actorSystem = ActorSystem("ActorSystem"); var props1 = Props[CreatingActor]; // creating pops here var actor1 = actorSystem.actorOf(props1); // passing pops reference var actor2 = actorSystem.actorOf(Props[CreatingActor], "Actor2")// Passing pops and explicitly giving name to the actor var actor3 = actorSystem.actorOf(Props(classOf[CreatingActor]), "Actor3")// Passing actor class by using classOf var actor4 = actorSystem.actorOf(Props[CreatingActor], name = "Actor4")// Name passing to variable var actor5 = actorSystem.actorOf(Props(new CreatingActor()), name = "Actor5") // This approach is not recommended actor1 ! "Hello" actor2 ! "Hello" actor3 ! "Hello" actor4 ! "Hello" actor5 ! "Hello" } }

如果没有明确给出名称, 它将自动生成。
【Akka Props用法示例详解】输出
Hello $a// Reference of the name of actor Hello Actor2 Hello Actor4 Hello Actor3 Hello Actor5

    推荐阅读