【发布时间】:2023-03-17 07:40:01
【问题描述】:
到目前为止,我的项目不使用
Akka,它作为单个进程运行并且做了太多事情。作为第一步,我们正在尝试放置一个脚手架,以便我们获得容错。例如,
ProjectSupervisor | ExistingProcessActor
ExistingProcessActor 将作为一个永远长期运行的作业运行,如果它因为某些Exception 而被杀死,ProjectSupervisor 将 restart 它
我对此不太确定,所以我在user-group 上提问,并收到了一个有趣的建议
[Me] def run: Unit = LogReaderDisruptor.main(Array())
是一种应该永远运行的方法,而且它需要一些设置(在客户端机器或测试环境中可用)[这里的建议] 你这样做 意味着 main() 永远不会返回?如果是这样,那么你正在阻止 Actor 并浪费了整个线程。在专用的 而是调度程序(请参阅调度程序和期货文档)。
我浏览了文档,但不明白我需要做什么。
这是否意味着跟随?
- ExistingProcessActor 将通过提供
PinnedDispatcher类型的自定义调度程序来启动新的future? - 如果是这样,那么如果发生任何故障,如何通知
ProjectSupervisor?他正在监视ExistingProcessActor而不是future(future不是Actor)
我很困惑,请指导我
【问题讨论】:
标签: java multithreading scala akka