父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 _ =>
}
答案 0 :(得分:0)
我一直都使用类似的模式。拥有一个使用设备ID作为键,并使用ActorRef作为值的Map -如果在给定的设备ID中映射中没有条目,请创建一个新的子对象;如果有给定设备ID的条目,则将消息转发给孩子。