如何使用AKKA / Actor进行异步/同步调用

时间:2019-12-03 22:10:37

标签: java akka actor playback

我是AkKA /演员的新手。我需要创建同步的Parent actor和两个或多个异步actor来调用一些Rest API。请提出哪种模式是合适的,即“告诉”或“询问”或“收件箱”?

1 个答案:

答案 0 :(得分:1)

首先,Akka不建议创建一个阻塞演员。

关于您的问题,根据Akka文档(here

告诉(作为文档解释“失火与忘记”),当您不期望目标参与者响应(异步调用)时使用。示例:

actorRef ! Message // async call

询问同时用于异步和同步请求。当将ask与Await一起使用时,当前角色将等待目标角色的响应,并且在异步操作时将ask与将来的任何指令一起使用。示例:

Await.result(actorRef ? Message, TimeOut(1 seconds)) // sync blocking call

onComplete(actorRef ? Message) {   // async non-blocking
  case Success(value) => complete(s"The result was $value")
  case Failure(ex)    => complete((InternalServerError, s"An error occurred: ${ex.getMessage}"))
}

参考文献:

  • 对于Akka未来指令:here
  • 消息发送方法:here
相关问题