- 新建一个AkkaDemo目录,进入该目录,新建一个build.gradle文件,输入以下内容
apply plugin: 'idea'
apply plugin: 'scala'
task "createDirs" << {
sourceSets*.scala.srcDirs*.each { it.mkdirs() }
sourceSets*.resources.srcDirs*.each { it.mkdirs() }
}
repositories{
mavenCentral()
mavenLocal()
}
dependencies{
compile "org.scala-lang:scala-library:2.10.4"
compile "org.scala-lang:scala-compiler:2.10.4"
compile "org.scala-lang:scala-reflect:2.10.4"
compile "com.typesafe.akka:akka-actor_2.11:2.4.4"
testCompile "junit:junit:4.11"
}
task run(type: JavaExec, dependsOn: classes) {
main = 'Main'
classpath sourceSets.main.runtimeClasspath
classpath configurations.runtime
}
- 进入build.gradle同级目录,在空白处按着”shift”键点击右键–》在此处打开命令行窗口。执行以下命令,创建项目骨架。
gradle cDirs
- 打开Idea,导入刚刚创建好的项目。
- 新建scala文件,输入以下内容:
import akka.actor.{Actor, ActorLogging, ActorRef, ActorSystem, Props}
class Actor1 extends Actor with ActorLogging {
val actor2 = context.actorOf(Props(new Actor2("actor2")), "actor2")
override def receive: Receive = {
case "test" => log.info("received test!")
case msg => actor2.tell(msg, sender())
}
}
class Actor2(name: String) extends Actor with ActorLogging {
override def receive = {
case msg => log.info(name + " received message [{}] from sender of [{}]", msg, sender)
}
}
object Demo {
def main(args: Array[String]): Unit = {
val demo = ActorSystem("demo")
val actor1 = demo.actorOf(Props[Actor1], name = "actor1")
actor1 ! "test"
actor1 ! "nihao"
}
}