我想問一下當需要從數據庫初始化actor狀態時的模式。我有一個DAO,它返回Future和Normaly非阻塞消息應該發送給未來的演員完成。但這種情況是不同的。在初始化完成之前,我無法從actor郵箱收到任何消息。在等待數據庫未來完成時阻止actor線程的唯一方法是?Akka actor從數據庫中讀取狀態
2
A
回答
3
最微不足道的方法是定義兩個接收方法,例如, initializing
和initialized
,從def receive = initializing
開始。在您的inizializing
環境中,您可以簡單地發回一條消息,如InitializationNotReady
,以告訴其他演員稍後再次嘗試。在演員初始化後,您將context become initialized
的上下文切換到新狀態,您可以在其中正常運行。
畢竟,另一個好的方法可能是看看Akka Persistence。它使有狀態的角色能夠堅持內部狀態,以便在角色啓動,JVM崩潰後或管理員重新啓動或在羣集中遷移時恢復內部狀態。
在你的情況下,你可以從數據庫中恢復你的狀態,因爲它們是Akka持久性的多個存儲選項。你可以找到它們here。恢復後,您可以收到您習慣的消息。
相關問題
- 1. 從數據庫中獲取狀態
- 2. 應該避免Akka Actor中的可變狀態嗎?
- 3. 如何暫時停止Akka actor從郵箱讀取郵件
- 4. 從Sybase數據庫中,我如何獲取數據庫狀態?
- 5. 掃描Akka Actor
- 6. Akka Logging outside Actor
- 7. 從.net獲取Oracle數據庫狀態
- 8. 實體管理器不從數據庫讀取最新狀態
- 9. 如何將akka sharded actor狀態外部化爲redis或ignite?
- 10. 通過消息訪問Akka Actor的狀態
- 11. 如何獲取在Akka中鍵入actor實現的actor參考?
- 12. Akka:動態添加Actor到BroadcastRouter
- 13. Java Akka Actor with spring
- 14. Scalatest FunSuite和Akka Actor
- 15. MongoDB從數據庫中讀取數據
- 16. 從數據庫中讀取MVC數據
- 17. 填充NAGIOS主機從數據庫獲取狀態數據
- 18. Ajax從數據庫讀取
- 19. PDO從數據庫讀取
- 20. 增量actor狀態複製?
- 21. 如何從2.0開始Akka Actor?
- 22. 從Akka Actor訪問Play配置
- 23. 數據庫狀態
- 24. 從數據庫中讀取數據的好處而不是從數據庫中讀取數據
- 25. Ajax settimeout從php/mysql中讀取狀態
- 26. 如何查詢大量的Akka actor並將結果存儲在數據庫中?
- 27. Marklogic從多個服務器中提取數據庫狀態?
- 28. 從數據庫中獲取JQuery-Plugin Datatables狀態
- 29. 如何測試Akka Persistence actor
- 30. Akka actor的異常處理
Akka持久性看起來不錯,但我不需要事件源和額外的快照存儲。我想從我現存的表格中讀取快照,有可能嗎?更改actor狀態與我的用例不匹配,因爲消息將從常規代碼(fire and forget)發送,而不是從單獨的actor中發送。 – user2860204
然後,你可以嘗試'藏匿'是否有助於你的情況。啓動演員時,可以隱藏所有收到的消息。初始化完成後,您可以清除所有收到的消息,以使它看起來像現在都已收到。你可以閱讀關於存儲在文檔http://doc.akka.io/docs/akka/current/scala/actors.html#Stash –