2015-03-20 10 views
5

W klasycznym programowaniu używam wzorca obeserver na wypadek, gdy chcę powiadomić obserwatorów o zmianach.Howto stworzyć obserwatora, takiego jak komunikacja pomiędzy aktorami z Akka

Jaki jest ekwiwalentny wzór w Akce?

przypadków użycia:

  • Aktor (PropertyServiceActor) czyta i właściwości buforowania tworzą DB
  • różnymi podmiotami, mogą zarejestrować się na PropertyServiceActor
  • Jeśli zmienia nieruchomości, PropertyServiceActor powiadamia zarejestrowanych podmiotów o zmianie

Odpowiedz

5

Spójrz na BroadcastGroup

//Create group 
val paths = List("/user/workers/w1", "/user/workers/w2", "/user/workers/w3") 
val observers: ActorRef = context.actorOf(BroadcastGroup(paths).props(), "observers") 

Aby powiadomić wszystkich obserwatorów, wystarczy wysłać wiadomość do observers ActorRef. Możesz także dodawać i usuwać obserwatorów, wysyłając akka.routing.AddRoutee i akka.routing.RemoveRoutee.

Możesz znaleźć więcej dokumentów routing.