【发布时间】:2017-03-20 10:59:53
【问题描述】:
我在阅读akka文档后发现:Ask会发送消息和
返回future并等待超时。同样,Tell会发送消息并
立即返回。我发现两者都一样,因为在这两种情况下,请求都是
异步生成,必须等待响应。Tell 实际上是什么
return?在哪种情况下使用 Ask 比使用 Tell 更好,反之亦然?
【问题讨论】:
我在阅读akka文档后发现:Ask会发送消息和
返回future并等待超时。同样,Tell会发送消息并
立即返回。我发现两者都一样,因为在这两种情况下,请求都是
异步生成,必须等待响应。Tell 实际上是什么
return?在哪种情况下使用 Ask 比使用 Tell 更好,反之亦然?
【问题讨论】:
当你的actor Ask() 到另一个actor 等待回复(你提到的Future)并且最终会暂停执行直到Future 值可用。 当你的 Actor 告诉另一个 Actor 某事时,它只是抛出消息,不期望回复并继续执行。
所以第一个更适合参与者之间的信息请求,另一个更适合裸信息发送。由您决定最适合您正在从事的项目的内容。
【讨论】:
当您在actor中Ask()时,发送者将等待Future响应 而当您在演员中使用 Tell() 时,您还必须将 ActorRef 发送到将发送响应的位置。
【讨论】: