关于scala:在akka中处理多条消息
Handling multiple messages in akka
在一个actor模型中处理多条消息的最佳方法是什么?
例如,如果您需要从一个参与者返回 2 条不同的消息,那么如何访问和检索来自另一个参与者的两条消息?
这是一个示例,展示了如何处理来自演员的不同结果。
给定以下演员:
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
case object GiveMeAFruit
trait Fruit case class Apple(size: Int) extends Fruit case class Pear(color: String) extends Fruit class FruitNinja extends Actor { |
与其他演员交流
|
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 = { def receive = { |
通过"正常"代码与演员通信
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 |
import akka.pattern.ask
def eatSomething = { (fruitNinja ? GiveMeAFruit).mapTo[Fruit].map{ |
Akka 中的 Actor 可以响应多种不同类型的消息,也可以发送任何消息...
|
1
2 3 4 5 6 7 8 9 10 11 12 |
case class Message1(id: Long)
case class Message2(thing: String) case class Response1(x: Int) case class Response2(y: Int) class MyActor extends Actor with ActorLogging { def receive = { |
您所要做的就是在 receive 方法中使用 case 语句查找它们。