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