【发布时间】:2020-03-11 19:03:58
【问题描述】:
我有一个关于 Akka 超时的问题。
例如,我有一个主管 Actor,它向 DBActor 发送一条消息以开始读取数据库。 Supervisor 将超时设置为 5 秒。
DBActor 开始读取数据库;它获取 ResultSet,然后进入循环迭代 ResultSet 行并构建返回值。
然后 Supervisor 遇到超时异常并从 .recover 块返回一个值
我的问题是;在 TimeoutException 之后 DBActor 是否继续循环遍历 ResultSet ?因为那将是资源泄漏。
【问题讨论】:
-
您是否已经创建了一个小样本?一年前,我创建了并且演员在超时到期后仍在工作。演员的接收不是资源安全的。也许我错了,smth已经改变了。
-
DBActor 不会自动通知 Supervisor 中的超时,除非您明确将其作为消息发送。如果需要取消“下游”操作,您可能应该使用其他一些并发机制,例如 Java 的可取消期货或类似的。