Akka學習筆記(三):什麼是Actor
Akka學習筆記(三):什麼是Actor
上一節講到actor是actor system最基本的單元。這一節詳細的講講actor.更詳細here。actor是一個擁有state,behavior,mailbox,children,supervisor strategy的容器.Akka保證所有actor都隻運行在自己的輕量級線程,並一次處理一個消息,這樣程序員就不用處理同步、競態
Actor Reference
為了防止actor對象被直接的訪問和操作,所以actors通過ActorRef來間接交流。message可以通過如下方式傳遞:
- ! (“tell”) - 發送message並馬上返回
- ? (“ask”) - 發送message並返回Future
詳見here
State
actor擁有的一組變量,即actor的state。state是可恢複的,詳見Persistence
Behavior
actor處理消息的方法吧~
Mailbox
所有收到的消息,會進入actor的mailbox隊列。默認是FIFO。
Children
每一個actor,都是潛在的監控者。actor會自動監控執行子任務的actor.children被放在context中,通過context.actorof(...))
或者context.stop(child))
操作children.這些操作都是異步的,所以相應非常快。
Supervisor Strategy
actor一旦創建,監控策略是不可修改的。Akka自動幫我們處理錯誤故障。具體的錯誤策略詳見錯誤的監督和監控
當Actor終止時
一旦actor意外終止,比如失敗了。它會釋放所有資源,將未處理的messages發送給system的dead letter mailbox.這些message將由EventStream處理。
為什麼不把dead letter全部丟掉呢?dead letter主要用來debug
最後更新:2017-04-03 05:39:34