在这篇文章里记录了akka的hello world,其中akka是作为一个库,或者说一个jar包的形式放在classpath上使用的,下面说一下使用 Microkernel(微内核)的方式来初始化Actor系统
1. 首先从http://akka.io/downloads/下载一份releases版本,解压后,设置好AKKA_HOME,其中的deploy目录用来放应用的jar包,bin目录下放的是要启动内核使用的脚本
2. 创建scala maven项目,不知道的可以参见http://tbwuming.iteye.com/blog/2070053,需要添加依赖
- <akka.version>2.3.2</akka.version>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-actor_2.10</artifactId>
- <version>${akka.version}</version>
- </dependency>
- <dependency>
- <groupId>com.typesafe.akka</groupId>
- <artifactId>akka-kernel_2.10</artifactId>
- <version>${akka.version}</version>
- </dependency>
3. 要以微内核的方式运行,需要创建Bootable的子类,实现startup和shutdown方法,这两个方法分别是应用启动时和关闭时进行调用的
- import akka.actor.{ Actor, ActorSystem, Props }
- import akka.kernel.Bootable
- case object Start
- class HelloActor extends Actor {
- val worldActor = context.actorOf(Props[WorldActor])
- def receive = {
- case Start => worldActor ! "Hello"
- case message: String =>
- println("Received message '%s'" format message)
- }
- }
- class WorldActor extends Actor {
- def receive = {
- case message: String => sender ! (message.toUpperCase + " world!")
- }
- }
- class HelloKernel extends Bootable {
- val system = ActorSystem("hellokernel")
- def startup = {
- println("startup, xxoo")
- system.actorOf(Props[HelloActor]) ! Start
- }
- def shutdown = {
- println("shutdown, xxoo")
- system.shutdown()
- }
- }
4. 运行,使用 mvn package打成jar包,将jar包放到deploy目录下,之后使用下面命令运行,如果想关闭,这使用Ctrl + C进行关闭
$ bin/akka org.wuming.akka.hello.kernel.HelloKernel
5. 运行结果,截个图吧