【发布时间】:2015-11-11 21:51:46
【问题描述】:
我正在尝试为我的应用程序收集健康信息
class HealthMonitor extends Actor with ActorLogging {
val statusReporter = new StatusReporter
val versionInfo = context.actorOf(Props[VersionInfo], "versionInfo")
val memoryInfo = context.actorOf(Props[MemoryInfo], "memoryInfo")
def receive = LoggingReceive {
case HealthReportRequest => log.debug("Generating Health Report")
println("Generating Health Report")
// todo (harit): should be concurrent calls and collect results
versionInfo ! VersionInfoRequest
memoryInfo ! MemoryInfoRequest
}
}
我需要什么
我需要一种方法来收集来自versionInfo、memoryInfo 的响应以及稍后将其他一些信息转换为 1 个响应并将其发送到某处
而我不想要顺序或想要阻止调用,最好的方法是什么?
【问题讨论】:
-
做一个询问 (?) 而不是一个告诉 (!),每条消息都将在没有阻塞的情况下发送,并且响应将在两个未来。然后,您可以将这两个 future 组合成一个带有 for 理解的响应。