我想问一下当需要从数据库初始化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 –