Здесь Scala 2.12 использует Akka. Когда один из моих акторов получает сообщение определенного типа (скажем, Fizzbuzz), я хочу, чтобы он пересылал это сообщение небольшому количеству других акторов, точно как есть:
Я пытался:
class Foo extends Actor {
override def receive: Receive = {
case Bar =>
println("Bar!")
case Whitstle =>
println("Whistle!")
case Fizzbuzz =>
val actor1 = context.actorSelection("/user/a1")
val actor2 = context.actorSelection("/user/a2")
val actor3 = context.actorSelection("/user/a3")
actor1 ! _
actor2 ! _
actor3 ! _
}
}
И хотя это компилируется и не генерирует никаких исключений, это не работает (ни один из трех участников никогда не получает сообщение Fizzbuzz). Любые идеи?





В блоке приема соберите ваше сообщение в переменной, а затем перенаправьте это сообщение другим участникам. Пожалуйста, обратитесь к коду ниже: -
class Foo extends Actor {
override def receive: Receive = {
case Bar =>
println("Bar!")
case Whitstle =>
println("Whistle!")
case msg : Fizzbuzz =>
val actor1 = context.actorSelection("/user/a1")
val actor2 = context.actorSelection("/user/a2")
val actor3 = context.actorSelection("/user/a3")
actor1 ! msg
actor2 ! msg
actor3 ! msg
}
}
Это должно решить вашу проблему. Пожалуйста, дайте мне знать, если возникнут какие-либо сомнения.
@hotmeatballsoup, пожалуйста, попробуйте этот подход.