0

假设我有以下代码:

  override val supervisorStrategy: SupervisorStrategy = {
    def defaultDecider: Decider = {
      case _: ActorInitializationException => Stop
      case _: ActorKilledException => Stop
      case ce: ConnectException => {
        log.info("ConnectException found. Restarting actor....")
        Restart 
      }
      case _: Exception  =>  Stop
    }

    OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = Duration.Inf)(defaultDecider)
  }
  val actor1Dispatcher = context.actorOf(Props[actor1Dispatcher], name = "actor1Dispatcher")
  val actor2Dispatcher = context.actorOf(Props[actor2Dispatcher], name = "actor2Dispatcher")
  val actor3Dispatcher = context.actorOf(Props[actor3Dispatcher], name = "actor3Dispatcher")

并说如果演员是actor1Dispatcher,我只想在ConnectionException上重新启动演员,否则,我只想默认运行。这可能吗?我还没有找到任何东西可以只在一种类型的子actor上运行调度。

4

1 回答 1

0

也许是这样的?

case ce: ConnectException if sender.path.name=="actor1Dispatcher" => Restart
于 2017-03-03T06:15:37.437 回答