【发布时间】:2013-03-18 21:32:24
【问题描述】:
我在 Scala 中使用 Akka Actor 来并行处理队列项。我有一个 MasterActor 和 10 个可重复使用的子 ProcessorActor。
正在处理的项目可以是不同的类型,例如红色、蓝色和绿色项目。在某一时刻,只能处理某种类型的单个项目。因此,如果正在处理一个红色项目,则不能同时处理更多的红色项目。
一切都很好,但现在我尝试为应用程序实现良好的容错能力,结果我无法获得太多关于在 Terminated 消息中失败的项目类型的信息。如果 ProcessorActor 失败,我需要在 MasterActor 中将适当的类型标记为可用于处理。现在我被困住了,因为我无法获得失败的项目类型。我在 Terminated 消息中有一个 ActorRef,但是我收到该消息后立即向它发送消息并不好。
最后,我可以将所有可能的类型都标记为“正在处理”,而实际上只有它们合适的演员死了。
请指教。
【问题讨论】: