Пересылка сообщений другим актерам Акки - PullRequest
0 голосов
/ 17 мая 2018

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 ! _
  }
}

И хотя он компилируется и не выдает никаких исключений, он не работает (никто из 3-х актеров никогда не получает сообщение Fizzbuzz). Есть идеи?

1 Ответ

0 голосов
/ 17 мая 2018

В блоке приема соберите ваше сообщение в переменную и затем перешлите это сообщение другим участникам.Пожалуйста, используйте код ниже: -

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 
  }
}

Это должно решить вашу проблему.Пожалуйста, дайте мне знать, если сомнения сохранятся.

...