Handling multiple messages in akka
在一个actor模型中处理多条消息的最佳方法是什么?
例如,如果您需要从一个参与者返回 2 条不同的消息,那么如何访问和检索来自另一个参与者的两条消息?
这是一个示例,展示了如何处理来自演员的不同结果。
给定以下演员:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
与其他演员交流
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class HungryActor extends Actor { val fruitNinja = context.actorOf(Props[FruitNinja]) override def preStart = { context.system.scheduler.schedule(5 seconds, 5 seconds, fruitNinja, GiveMeAFruit) } def receive = { // handle different returns from FruitNinja case Apple(size) => println(s"Got an apple sized $size.") case Pear(color) => println(s"Got a $color pear") } } |
通过"正常"代码与演员通信
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import akka.pattern.ask def eatSomething = { // create an instance of the actor using an actorsystem in scope val fruitNinja = Akka.system.actorOf(Props[FruitNinja]) (fruitNinja ? GiveMeAFruit).mapTo[Fruit].map{ // handle different returns from FruitNinja case Apple(size) => println(s"Got an apple sized $size.") case Pear(color) => println(s"Got a $color pear") } } |
Akka 中的 Actor 可以响应多种不同类型的消息,也可以发送任何消息...
1 2 3 4 5 6 7 8 9 10 11 12 |
您所要做的就是在