Akka超时资源泄漏

Akka timeout resource leak

我有一个关于 Akka 超时的问题。

例如,我有一个 Supervisor actor,它向 DBActor 发送消息以开始读取数据库。 Supervisor 将超时设置为 5 秒。

DBActor开始读取数据库;它获取 ResultSet,然后进入循环以迭代 ResultSet 行并构建 return 值。

然后 Supervisor 遇到超时异常并且 returns 来自 .recover 块的值

我的问题是; DBActor 会在 TimeoutException 之后继续循环遍历 ResultSet 吗?因为那将是资源泄漏。

DBActor 独立于主管,并将继续处理记录,直到完成或被告知停止。主管放弃当前请求并不重要,因为 DBActor 不知道这一点。如果您希望流程提前停止,监管者将不得不向 DBActor 发送另一条消息,告诉它中止操作。 supervisor 还要处理超时后结果到达的情况。

另请注意,Scala 不能 "leak" 资源本身,因为它实现了垃圾收集。如果资源在某处累积,那是因为对该资源的引用被对象持有。