2

私は Akka アクターの使用方法を学んでおり、Akka ドキュメントのフォールト トレランスに関するこの例を見つけまし

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
    }
}

親クラスと子クラスを制御するテスト クラスを作成しようとしています。このクラスには、初期化部分を実行するメソッドと、子インスタンスにメッセージを送信する別のメソッドが必要です。

クラスを組織するのに助けが必要です。Java では、ActorSystem、Parent、Child をインスタンス変数として宣言し、メソッド内で使用します。しかし、Scala でこれを行う方法がわかりません。

ありがとう。

4

1 に答える 1

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")
     }
   }       
}

また、akka scala のドキュメントを参照することをお勧めします。

于 2013-07-04T16:38:14.863 に答える