我正在学习如何使用Akka演员,我在Akka文档here的Fault Tolerance中找到了这个例子。
class Parent extends Actor with ActorLogging {
override val supervisorStrategy =
OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 1 minute) {
case _: ArithmeticException ⇒ Resume
case _: NullPointerException ⇒ Restart
case _: IllegalArgumentException ⇒ Stop
case _: Exception ⇒ Escalate
}
def receive = {
case p: Props ⇒ sender ! context.actorOf(p)
}
}
class Child extends Actor {
var state = 0
def receive = {
case ex: Exception ⇒ throw ex
case x: Int ⇒ state = x
case "get" ⇒ sender ! state
}
}
我正在尝试创建一个测试类来控制Parent和Child类。这个类应该有一个方法来执行初始化部分,另一个方法是将消息发送到子实例。
我在组织课程时需要帮助。在Java中,我将ActorSystem,Parent和Child声明为实例变量,并在方法中使用它们。但我不确定如何在Scala中这样做。
感谢。
答案 0 :(得分:1)
不是最好的方法。但我认为它应该有用。
object Application {
def main(args : Array[String]) {
val system = ActorSystem("mySystem")
val parent = system.actorOf(Props[Parent], "parent")
(parent ? Props[Child]).mapTo[ActorRef].foreach { child =>
child ! new IllegalArgumentException("Oh my")
}
}
}