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

謎言語使いの徒然

適当に気になった技術や言語を流すブログ。

Akka を勉強する 4

Scala 勉強

ActorSystem は単語単位で名称を持つことができる。これはURIスキーマの一部として利用することができる。
使える範囲は「'^[a-zA-Z0-9][a-zA-Z0-9-]*$'」の範囲だそうな。
これはこんな感じで書くそうな。

akka://actorSystemName@ServerHostName:9000/user/path/to/actor

リモートアクターするときとかに使うんだそうです。
アクターは二つの階層構造を持ってて、一つはシステムレベル(内部タスク向け)、もう一つはアプリケーション用のユーザレベル。
とりあえず今はユーザレベルを勉強する。
で、そのトップユーザレベルのアクターはシステムが1個だけ作っていて、これが user 。こいつはAkkaの中じゃ guardian とかいうらしい?
アクターシステムに限らず、アクターは子のアクターを作成することができる。これは階層構造化されていく。当然同一階層で名前の重複は許さない。
全てのアクターは自動で子階層の Supervisor になる。Supervisorは子がクラッシュしたときにストラテジにしたがって障害を修正する。
Supervisor の階層構造は Actor のそれと一緒。問題が発生すればこの階層をたどって上位に通知されるようになっている。

この階層構造を保つために akka では Actor をコンストラクタで生成したりはできないようになっている。

前回弄った Props について

こいつは creator, dispatcher, routerConfig, deploy というプロパティがある。
creator は何のことはない Actor のファクトリ。
次に dispatcher こいつは実際の dispatcher のIDだそうな。デフォルトではActorSystemのもので、event base 動作、スレッドプールを利用し、BlockibgQueueを使用すると。
routerConfig 何かルーティング設定らしい。デフォルトでは何も設定されていないそうな。
deploy Actorのデプロイ設定。デフォルトはローカル。ここでリモートとかの設定を弄るらしい。

PinnedDispatcher : こいつは1アクター1スレッド動作のディスパッチャ。