如何以特定顺序关闭演员,使其能够在死亡之前发送消息?

时间:2019-01-07 16:10:25

标签: java websocket akka

我有一个演员层次结构,顶部是WebsocketActor。 它处理与第三方服务的连接,并具有处理复杂逻辑的n SessionActor参与者。 现在,我希望在系统关闭时,每个SessionActor都将其最后一条消息发送给WebsocketActor actor(例如“确定,终止我的会话”)。 但是,由于WebsocketActor的收件箱已停止,因此它无法正常工作。

我尝试了shutdownGracefully()方法,并且知道Reaper模式,但是不确定是否适合我。

我使用的堆栈是:Akka + Netty和javax.websocket.*;,用于处理第三方Websocket服务

1 个答案:

答案 0 :(得分:0)

akka中没有标准机制可以完全满足您的要求。

您必须自己实现这种“清理”机制。

此机制必须启动,并且非常重要的是必须在启动参与者系统终止之前完成。

尽管可以实现这种机制,但是您可能通常需要重新考虑使用akka。

如果您需要保证系统中邮件的传递,则akka不适合您。它带有“至多一次传递”策略,这意味着不存在用于消息重新传递和确认的内置逻辑。签出message-delivery-reliability