根据收到的消息ID创建子Actor

时间:2018-11-10 09:14:08

标签: akka

父actor根据接收到的消息中的身份创建一个子actor,并且相同的消息ID将重用该子actor。我该怎么办?我现在正在用这种方式。

override def receive: Receive = {
    case location: DeviceLocationInfo =>
       log.info(s"$location")
     val settings = CacheBasicAlarmSettingInRedis(system)
       .memoizeInRedisBasicAlarmSetting(location.deviceId)
     settings foreach { setting =>
      val actorRef = context.child(location.deviceId)
        .getOrElse(context.actorOf(Props(new OverSpeedAlarm),location.deviceId))
      actorRef ! location
     }

    case _ =>
  }

1 个答案:

答案 0 :(得分:0)

我一直都使用类似的模式。拥有一个使用设备ID作为键,并使用ActorRef作为值的Map -如果在给定的设备ID中映射中没有条目,请创建一个新的子对象;如果有给定设备ID的条目,则将消息转发给孩子。

相关问题