Akka Frameworkチュートリアルの次

Akka Documentationの左メニューを辿って、他にどんな機能があるか、ざざっとみていきます。

Akka Documentation

チュートリアルとの差分で、Core Featuresには他にどんな機能があるか、メモ程度に書き出しておきます。詳しくは原文をっ

Actors

割愛。新しい情報としては、次の2つあたり。

・メッセージ送信時にFutureを取得する方法
・Actorの内部ロジックを動的に変更するHotSwap

Typed Actors

普通のActorの書き方

 class MyActor extends Actor {
  def receive = {
   case event: ChatMessage => ()
   case _ => ()
  }
 }

ではなく、POJO的なインターフェースを定義してActorを生成・実行する方法。

 trait SomeService{
  def post(event:ChatMessage):Unit
 }
 class SomeServiceImpl extends TypedActor
  with SomeService{
 }

内部ではAspectWerkzによるAOPを使っている。
たしかにActorの記述方式では、仕様が大きくなるとスパゲッティー化してしまう恐れがあるので、各メッセージングをドキュメント(ScalaDocや設計書)化したい場合などに便利そうです。

ActorRegistry

Actorのレジストリオブジェクト。各Actor参照の取得や一括管理ができる。
Actorの起動・停止時に自動的にActorRegistryの内容が更新されるが、明示的に登録・削除もできる。また、レジストリの内容変更をListen(Observe)することもできる。

Agents

Clojureからいただいた機能で、内部に可変領域を持つ特殊なActor。可変領域の更新は関数(Action)をsendすることによって行う。

Software Transactional Memory(STM)

共有メモリ(Java Heap)上でトランザクション(begin/commit/rollback)を行うしくみ。

Transactors

ActorとSTMの機能を統合したAPI

Remote Actors

リモートActorの作り方、呼び出し方、API詳細。
リモートに渡すメッセージのシリアライゼーションの仕方にもいろいろある。> Scala JSON/Protobuf/SBinary

Fault-tolerance

Supervisorと監視対象Actorの作り方、API詳細。

Dispatchers

スレッド生成を調整してパフォーマンスを最適化するためのAPI。
Actor毎に、キューサイズやスレッドプール数などを変更できる。

Serialization

Actorやメッセージをシリアライゼーションする方法いろいろ。

Routing

■Dispatcher
  メッセージによって他のActorに処理を振り分けるActor
  (※上記のスレッド調整Dispatcherとは別物)
■LoadBalancer
  順番に複数Actorに処理を振り分けるActor
などがある。


他に、Add-On Modules、External Sample Projectsあたりに情報・サンプルコードがたくさん。GitHubで"akka"を検索してもいいですね。

Play!FrameworkのAkkaモジュールも良さそうです。
http://implicit.ly/akka-module-for-the-play-framework


以上、ざっとAkkaで何できそうかの調査終わり、ちょっと飽きた!
あとは何かモノ作ってみてですねー。


コメント

コメントしてください
お名前:
入力しなければ「匿名さん」。20字以内。

メール:
入力しても表示しません

URL:
入力すればリンクが貼れます


コメント: