【发布时间】:2015-08-08 23:43:06
【问题描述】:
我有一个 Master Actor,它使用路由器创建 Worker Actor。每个 Worker 参与者执行多个 HTTP 连接。
从几个来源我了解到,如果演员做一些阻塞操作,那么最好将阻塞操作包装到这个构造中:
val resFut = future {
blocking {
executeQuery()
}
}
resFut pipeTo sender
但后来我读到 official topic 关于在 Akka 中处理阻塞操作,我很惊讶该主题建议仅使用路由器进行阻塞操作(作为 Futures 的替代品):
在一个参与者(或一组由一个 路由器),确保配置一个线程池 要么专门用于此目的,要么足够大。
所以我的问题是:我是否应该在我的 Worker Actor 中使用以下构造,即使它由路由器支持?
future {
blocking {
executeQuery()
}
}
或者只是为路由器配置和使用另一个调度程序将帮助我获得相同的好处?
【问题讨论】: