关于我正在构建的新 akka 应用程序,我遇到了设计挑战。问题/挑战是:在客户端我做了一个简单的演员,它发送一个请求,然后使用 become() 等待正确的服务器回答,当然还包括超时消息,以防万一我不'不能在适当的时候得到答复。然而,有趣的是在服务器端。在这里,我有以下结构:
Actor A(配置为循环路由器)此路由器正在接收来自客户端的所有请求。
然后演员 A 将消息转发给演员 A1、A2...Ax,这一切都是在演员 A 的上下文中创建的,这意味着它是他们的监督者。
在正常情况下,Axe 只能回复发件人,因为消息已转发,但是......如果出现错误,我想除了将其记录在服务器日志上之外,还给用户 som有关已发生错误的信息。
在完美的世界中,我希望能够以某种方式在主管策略中只说 getErrorActorsLastSender() 之类的内容,然后获取导致问题的客户端的 ActorRef。我更喜欢这个的原因是,我将有一个地方来处理所有的错误,并且所有不可预见的异常都会至少以某种通用的方式进行处理。
另一种方法是覆盖每个子actor上的prerestart()方法,然后制定主管策略以在抛出异常时重新启动actor。但是,这将要求我为 x 个子演员实现此方法。
有什么好的建议,如果这可以从主管策略中获得?
提前致谢。