【发布时间】:2019-02-09 02:56:34
【问题描述】:
我有 2 名演员,一名主管和一名儿童演员。
主管:
class DemoActorSupervisor(implicit val system: ActorSystem, config: Config) extends Actor {
val childActor: ActorRef = context.actorOf(FromConfig.props(Props[DemoActorChild]), "DemoChildActor")
context.watch(childActor)
override def receive: Receive = {
case s: String =>
childActor forward s
}
}
儿童演员:
class DemoActorChild extends Actor {
def receive: Receive = {
case s: String =>
Thread.sleep(100)
Future.successful(true) pipeTo (sender)
}
}
主要方法:
object ABC extends App {
implicit val system: ActorSystem = ActorSystem("Demo")
implicit val config: Config = ConfigFactory.load()
implicit val timeout: Timeout = Timeout(5, TimeUnit.MILLISECONDS)
val supervisor = system.actorOf(DemoActorSupervisor.props(), "DemoSupervisor")
val x: Future[Boolean] = (supervisor ? ("ASK")).mapTo[Boolean]
x.foreach(println)
}
我已将询问超时设置为 5 毫秒,并向主管演员发出询问电话。将消息转发给子actor。在子演员中,我在逻辑上放置了Thread.sleep(100),我应该得到询问超时异常,因为我已将超时设置为 5 毫秒,而孩子的响应时间超过 100 毫秒,但我没有收到询问超时异常。
有人可以告诉我代码有什么问题吗?如何获取请求超时异常。
【问题讨论】:
标签: scala exception timeout akka