【完整代码】Scala akka入门示例

package com.zxl.akkaimport akka.actor.{Actor, ActorRef, ActorSystem, Props}
//说明
//1. 当我们继承 Actor 后,就是一个 Actor,核心方法 receive 方法重写
class SayHelloActor extends Actor{ //说明 //1. receive 方法,会被该 Actor 的 MailBox(实现了 Runnable 接口)调用//2. 当该 Actor 的 MailBox 接收到消息,就会调用 receive//3. type Receive = PartialFunction[Any, Unit]override def receive:Receive = {case "hello" => println("收到 hello, 回应 hello too:)")case "ok" => println("收到 ok, 回应 ok too:)")case "exit" => {println("接收到 exit 指令,退出系统")context.stop(self) //停止 actorefcontext.system.terminate()//退出 actorsystem}case _ => println("匹配不到")}
}object SayHelloActorDemo {//1. 先创建一个 ActorSystem, 专门用于创建 Actorprivate val actoryFactory = ActorSystem("actoryFactory")//2. 创建一个 Actor 的同时,返回 Actor 的 ActorRef// 说明//(1) Props[SayHelloActor] 创建了一个 SayHelloActor 实例,使用反射//(2) "sayHelloActor" 给 actor 取名//(3) sayHelloActorRef: ActorRef 就是 Props[SayHelloActor] 的 ActorRef//(4) 创建的 SayHelloActor 实例被 ActorSystme 接管private val sayHelloActorRef: ActorRef = actoryFactory.actorOf(Props[SayHelloActor],"sayHelloActor")def main(args: Array[String]): Unit = {//给 SayHelloActor 发消息(邮箱)sayHelloActorRef ! "hello"sayHelloActorRef ! "ok"sayHelloActorRef ! "ok~"//研究异步如何退出 ActorSystemsayHelloActorRef ! "exit"}
}

pom文件


<modelVersion>4.0.0modelVersion><groupId>com.zxl.akkagroupId><artifactId>akka-helloartifactId><version>1.0version><properties><scala.version>2.11.8scala.version><scala.compat.version>2.11scala.compat.version><akka.version>2.4.17akka.version><encoding>UTF-8encoding>properties><dependencies><dependency><groupId>org.scala-langgroupId><artifactId>scala-libraryartifactId><version>${scala.version}version>dependency><dependency><groupId>com.typesafe.akkagroupId><artifactId>akka-actor_${scala.compat.version}artifactId><version>${akka.version}version>dependency><dependency><groupId>com.typesafe.akkagroupId><artifactId>akka-remote_${scala.compat.version}artifactId><version>${akka.version}version>dependency>dependencies><build><sourceDirectory>src/main/scalasourceDirectory><plugins><plugin><groupId>net.alchim31.mavengroupId><artifactId>scala-maven-pluginartifactId><version>3.2.2version><executions><execution><goals><goal>compilegoal><goal>testCompilegoal>goals><configuration><args><arg>-dependencyfilearg><arg>${project.build.directory}/.scala_dependenciesarg>args>configuration>execution>executions>plugin><plugin><groupId>org.apache.maven.pluginsgroupId><artifactId>maven-assembly-pluginartifactId><executions><execution><phase>packagephase><goals><goal>singlegoal>goals><configuration><archive><manifest><mainClass>com.zxl.akka.HellomainClass>manifest>archive><descriptorRefs><descriptorRef>jar-with-dependenciesdescriptorRef>descriptorRefs>configuration>execution>executions>plugin>plugins>build>project>

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部