【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、在設備組裏添加查詢功能

發佈了20 篇原創文章 · 獲贊 74 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章