Akka PoisonPill 的用例

Use case for Akka PoisonPill

根据 PoisonPill 的 Akka 文档:

You can also send an actor the akka.actor.PoisonPill message, which will stop the actor when the message is processed. PoisonPill is enqueued as ordinary messages and will be handled after messages that were already queued in the mailbox.

虽然这样的特性usefulness/utility对于阿卡大师来说可能是显而易见的,但是对于新手来说,这听起来完全useless/reckless/dangerous。

所以我问:这条消息有什么意义,什么时候会出于任何原因使用它?!?

我们使用一种名为 disposable actors 的模式:

  • 为每个应用程序请求创建一个新的临时参与者。
  • 这个 actor 可能会创建一些其他 actor 来完成一些与请求相关的工作。
  • 处理后的结果发送回客户端。
  • 与此请求相关的所有临时参与者都已终止。那就是使用PoisonPill的地方。

创建 actor 意味着开销非常低(大约 300 字节的 RAM),因此这是一个很好的做法。