Akka学习笔记(一):创建Hello World工程
来源:互联网 发布:房地产投资模型 知乎 编辑:程序博客网 时间:2024/05/18 00:54
原文转自:http://blog.csdn.net/wsscy2004/article/details/38233091
Akka学习笔记(一):创建Hello World工程
创建工程
使用IDEA,创建SBT工程,在build.sbt中添加akka依赖:
name := "My Project"version := "1.0"scalaVersion := "2.10.4"resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"libraryDependencies += "com.typesafe.akka" %% "akka-actor" % "2.3.4"
如果SBT版本低于0.12,需要更改依赖为:
libraryDependencies += "com.typesafe.akka" % "akka-actor_2.10" % "2.3.4"
其他IDE,构建方式,请看here
Hello World
完整代码可以在这里下载
HelloWorld.scala
我们创建HelloWorld.scala,代码如下:
class HelloWorld extends Actor { override def preStart(): Unit = { // create the greeter actor val greeter = context.actorOf(Props[Greeter], "greeter") // tell it to perform the greeting greeter ! Greeter.Greet } def receive = { // when the greeter is done, stop this actor and with it the application case Greeter.Done => context.stop(self) }}
HelloWorld是我们这个应用的中心(main),它会启动和关闭所有actor(Greeter)
Greeter.scala
object Greeter { case object Greet case object Done}class Greeter extends Actor { def receive = { case Greeter.Greet => println("Hello World!") sender() ! Greeter.Done }}
Greeter的内容很简单,一旦它被创建,等待接受消息,打印Hello World!,并告诉调用者Greeter.Done
Main.scala
让我们运行这个程序吧,很简单,指定负责调度的Actor:HelloWorld就可以了:
object Main { def main(args: Array[String]): Unit = { akka.Main.main(Array(classOf[HelloWorld].getName)) }}
运行:
Hello World![INFO] [07/25/2014 15:11:43.147] [Main-akka.actor.default-dispatcher-4] [akka://Main/user/app-terminator] application supervisor has terminated, shutting down
如何发布和使用Akka程序
有两种方式:
- 当做jar包使用
- 作为单独的服务,使用Akka Microkernel,详见here
Akka Microkernel
大致就是,把依赖包放到lib/*,通过启动类如(HelloKernel)启动:
bin/akka sample.kernel.hello.HelloKernel
helloKernel代码如下:
package sample.kernel.helloimport akka.actor.{ Actor, ActorSystem, Props }import akka.kernel.Bootablecase object Startclass 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!") }} //启动类,需要继承Bootableclass HelloKernel extends Bootable { val system = ActorSystem("hellokernel") def startup = { system.actorOf(Props[HelloActor]) ! Start } def shutdown = { system.shutdown() }}
0 0
- Akka学习笔记(一):创建Hello World工程
- Akka学习笔记(一):创建Hello World工程
- Python学习笔记(一)Hello World
- maven学习笔记(一)hello world
- springMVC学习笔记一(hello world)
- Android 学习笔记一:创建一个Hello World
- object—c学习笔记(一)-----创建hello world
- Allen 学习 cocos2dx (一) 创建游戏项目 Hello World
- Objective-C 学习笔记(一)hello world和基础
- LDD3学习笔记(一) --hello world模块
- LDD3学习笔记(一) --hello world模块
- LDD3学习笔记(一) --hello world模块
- qt学习笔记(一)之Hello world
- LDD3学习笔记(一) --hello world模块
- Prism学习笔记(一) 从Hello World开始
- LDD3学习笔记(一) --hello world模块
- Prism学习笔记(一) 从Hello World开始
- Flex学习笔记(一)——Hello World
- Cannot call this method while RecyclerView is computing a layout or scrolling
- 面向对象三个基本特征
- 搭建redis-sentinel(哨兵机制)集群
- JavaScript 知识点回顾
- 对象与引用
- Akka学习笔记(一):创建Hello World工程
- 工作日志--openSNS二次开发--微店模块部分bug修复,部分功能优化及营业总额功能增加
- ios异常机制
- tableView didSelectRowAtIndexPath 与手势的问题
- Vector容器与iterator迭代器
- 牛客网 8.2 2017网易校招 Java 第二题 地牢逃脱
- Android之Handler用法总结
- HDU Arc of Dream
- 9 隐含规则