是否可以从actor系统外部使用“不要问”模式?

时间:2019-07-01 08:04:58

标签: akka

我有一个不在actor系统外部的服务,该服务通过ask调用actor系统,并希望得到响应。

一种明显的实现方法是使用 询问模式并等待响应,直到发生超时为止,如下所示:

val futureArticle = articleParseActor ? ParseArticle("someArctile")
val parsedArticle = Await.result(futureArticle, 10 seconds)

是否可以通过actor系统外部的tell(!)实现相同的目的?

1 个答案:

答案 0 :(得分:0)

从方法签名中可以看到。

final def tell(msg: Any, sender: ActorRef): Unit

Tell方法返回Unit。这意味着您不能像Ask方法那样接收Future。

def ask(message: Any)(implicit timeout: Timeout, sender: ActorRef = Actor.noSender): Future[Any]

如果要使用tell接收消息,则可能不需要实现一些自定义ReceiverActor,它将在actor系统内部接收消息,然后在actor逻辑外部进行调用。另外,您可以实现更通用的功能,可能与ask方法类似。