actors可以替代:
一個線程
一個對象或者元件
一個callback或者listener
一個單例或者服務
一個路由轉發者,負載均衡器,池
一個java ee的session bean或者事件驅動bean
建立很多的actors:
actors不像線程一樣重,可以把它們當做輕量級的對象來看
為每個請求建立一個actor?沒問題
為處理一個message,建立一個内部actor去處理?可以
actor樹應該很深,而不是很淺
不要用阻塞,否則會ties up該線程,并占有大量系統資源。
如果一定要用,在一個獨立的線程池中适用阻塞api,将其隔離在actor或者future中。(ppt 49頁)
配置
dispatcher(thread pool)
actors樹形繼承結構
預設的,事件驅動的,将一組actor綁到一個線程池中,共享線程的
預設為akka.actor.default-mailbox(無限郵箱,java.util.concurrent.concurrentlinkedqueue)預設是先進先出的隊列,可以自行實作優先級隊列,但akka中目前behavior必須總是處理下一個出隊的消息,而且沒有掃描mailbox的動作,處理消息失敗時,即認為failure發生了,當然這個行為可以被重寫
可以了解為calble,跑線上程池上
這是一個 actor 執行個體的句柄(handle),你可以用它來與實際的 actor進行互動。 the actorref 是不可變量,與它所代表的actor之間是一對一的關系
攜帶日志消息,死信.actor可以從eventstream訂閱日志或者死信
<a target="_blank" href="http://www.gtan.com/akka_doc/scala/dispatchers.html">http://www.gtan.com/akka_doc/scala/dispatchers.html</a>
<a target="_blank" href="http://www.slideshare.net/developerforce/df121253-patterson?next_slideshow=1">http://www.slideshare.net/developerforce/df121253-patterson?next_slideshow=1</a>