Создать дочерний актер на основе полученного идентификатора сообщения - PullRequest
0 голосов
/ 10 ноября 2018

Родительский субъект создает дочерний субъект на основе идентификатора в полученном сообщении, и тот же идентификатор сообщения будет повторно использовать дочерний субъект. Что я должен делать? Я сейчас так использую.

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 голосов
/ 21 ноября 2018

Я все время использую похожую модель.Имейте Карту, которая использует идентификатор устройства в качестве ключа и ActorRef в качестве значения - если на карте нет записи для данного идентификатора устройства, создайте нового дочернего элемента;если для данного идентификатора устройства есть запись, перешлите сообщение дочернему элементу.

...