【AKKA 官方文档翻译】第二部分:创建第一个actor

第二部分:创建第一个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、在设备组里添加查询功能

posted @ 2017-12-18 18:46  海角Q  阅读(129)  评论(0编辑  收藏  举报