第二部分:创建第一个actor
akka版本2.5.8
版权声明:本文为博主原创文章,未经博主允许不得转载。
在前面我们已经了解了actor的层级结构和行为,接下来问题就是如何将我们物联网系统的顶层组件映射到actor上。你可能会想到用顶级actor来表示设备和仪表盘,相反的,我们建议创建一个显式的组件来代表整个应用程序。换句话说,在我们的物联网系统中,只会存在一个顶级actor。这个组件创建并管理我们的设备和仪表盘,并把它们作为子actor。这允许我们将实例代码结构重构为以下actor树:
在应用程序开始,我们可以简单的几行代码定义一个actor:IotSupervisor:
1、在
com.lightbend.akka.sample包下创建一个新的IotSupervisor源文件
2、把下面的代码粘贴到IotSupervisor文件里
package com.lightbend.akka.sample
import akka.actor.{ Actor, ActorLogging, Props }
object IotSupervisor {
def props(): Props = Props(new IotSupervisor)
}
class IotSupervisor extends Actor with ActorLogging {
override def preStart(): Unit = log.info("IoT Application started")
override def postStop(): Unit = log.info("IoT Application stopped")
// No need to handle any messages
override def receive = Actor.emptyBehavior
}
这个代码和之前的实例代码很像,不过需要注意的是:
我们使用了
ActorLogging助手特质而不是println(),它可以直接调用Akka内置的日志组件
我们使用了推荐的创建actor方式,在actor的伴生对象内定义props()方法
添加一个新的IotApp伴生对象来提供创建整个系统的入口main方法。
package com.lightbend.akka.sample
import akka.actor.ActorSystem
import scala.io.StdIn
object IotApp {
def main(args: Array[String]): Unit = {
val system = ActorSystem("iot-system")
try {
// Create top level supervisor
val supervisor = system.actorOf(IotSupervisor.props(), "iot-supervisor")
// Exit the system after ENTER is pressed
StdIn.readLine()
} finally {
system.terminate()
}
}
}
这个程序没有啥东西,就打印出来它启动了。但是我们有了第一个actor,之后我们准备添加其他的actor。
下一步要做什么
在接下来的章节中,我们将逐步扩展我们的应用:
1、为谁被创建表示体
2、创建设备的管理组件
3、在设备组里添加查询功能
本文介绍如何在Akka框架下创建IoT系统的顶级Actor——IotSupervisor,并通过简单示例展示了如何启动该Actor及整个系统。此外,还讨论了如何利用Actor树结构来组织IoT系统。

被折叠的 条评论
为什么被折叠?



