-
我的项目是 not ,使用
Akka
截至目前,它作为一个进程运行,并做了太多的事情 . -
作为第一个初始步骤,我们正在尝试将脚手架放置到位,以便我们获得Fault Tolerance . 例如,
ProjectSupervisor
|
ExistingProcessActor
ExistingProcessActor
将作为一个永远长期运行的工作运行,如果因为一些 Exception
而被杀死, ProjectSupervisor
将 restart
它
我对此并不太确定,所以我在user-group问过,并收到了一个有趣的建议
[Me] def run:Unit = LogReaderDisruptor.main(Array())是一个应该永远运行的方法,加上它需要一些设置(可在客户端的机器或测试环境中使用)[建议在这里]由此做你的意思是main()永远不会返回?如果是这样,那么你将阻止Actor并浪费整个线程 . 将其发送给专门的调度员(参见调度员和期货文档) .
我浏览了文档,但没有理解我需要做什么 .
这是否意味着以下?
-
ExistingProcessActor将通过提供
PinnedDispatcher
类型的自定义调度程序来启动新的future
? -
如果是,那么在任何失败的情况下如何通知_907624?他正在监视
ExistingProcessActor
而不是future
(future
不是Actor
)
我很困惑,请指导我
1 回答
您不需要使用Future就可以在专用调度程序中完成工作 . 这可以通过生成一个actor并将该actor分配给专用调度程序来完成 . akka文档中的一个简单示例:
http://doc.akka.io/docs/akka/snapshot/scala/dispatchers.html
您可以在创建
ExistingProcessActor
时在项目主管内执行此操作,将该actor放在固定的调度程序上,然后您的监督策略将继续按您的需要运行 .