読者です 読者をやめる 読者になる 読者になる

Scalaの分散処理ライブラリAkkaをさわってみる

What is Akka?

Scala Documentation — Akka Documentation
分散処理を実装するScalaJavaのライブラリ。
スケーラブルなアプリケーションを作成できるらしい。


準備

tabakazu.hatenablog.com

この記事で作成した雛形から始めます。



Getting Started

Getting Started — Akka Documentation

// build.sbt

name := "akkasample"

version := "1.0"

scalaVersion := "2.11.8"

libraryDependencies +=
  "com.typesafe.akka" %% "akka-actor" % "2.4.10"



Creating Actors

Actors — Akka Documentation

// src/main/scala/Main.scala

import akka.actor.Actor
import akka.actor.ActorSystem
import akka.actor.Props
import akka.event.Logging

class MyActor extends Actor {
  val log = Logging(context.system, this)

  def receive = {
    case s: String => log.info("%s" format s)
    case _ => log.info("no message")
  }
}

object Main {
  def main(args: Array[String]): Unit = {
    val system = ActorSystem("mySystem")
    val props = Props[MyActor]

    val actor = system.actorOf(props, name = "myActor")
    actor ! "Hello Actor"
  }
}


Actor
メッセージを受信し、対応した処理をする

ActorSystem
Actorの作成や検索をするエントリーポイント

Props
Actorのインスタンスを作成する



実行

sbt compile run
### 出力 ###
[INFO] [09/09/2016 00:00:00] [mySystem-akka.actor.default-dispatcher] [akka://mySystem/user/myActor] Hello Actor