Как я могу использовать Akka Actor и поддерживать безопасность типа? или избегать использования запроса в пользу сообщений?
При вызове ?
или ask
в Акке Акка возвращается Future[Any]
, и я должен сделать явное приведение через future.mapTo[MyType]
.
Мне не нравится потерять этот тип безопасности. Если я использую Futures напрямую (без актеров), я могу явно вернуть Future[MyType]
и поддерживать безопасность типов.
В моем конкретном случае использования актер делегирует это сообщение двум дочерним субъектам, а затем агрегирует результаты этих участников и возвращает их родительскому отправителю. Метод моего родительского метода похож на этот подход в Документах Akka:
http://doc.akka.io/docs/akka/2.0/scala/futures.html#For_Comprehensions
val f1 = actor1 ? msg
val f2 = actor2 ? msg
val f3 = for {
a ← f1.mapTo[Int]
b ← f2.mapTo[Int]
c ← ask(actor3, (a + b)).mapTo[Int]
} yield c
Есть ли лучший способ добиться моего использования?