как процесс akka ActorSystem получает от актера - PullRequest
0 голосов
/ 17 апреля 2020

как я могу заставить процесс создать Actor с ActorOf и позволить актору пропинговать родительский процесс. Моя цель - позволить актеру посылать сигнал своему родительскому процессу (основной поток ActorSystem) для вызова system.terminate. Но понятия не имею, как это сделать. Вот фрагмент кода, но вместо этого я не хочу вызывать терминатор из основного, а скорее получаю сигнал от актера о вызове завершить. Это выполнимо?

object MyTest {
    def main(args: Array[String]): Unit = {
        println("test test")
        Thread.sleep(10000)
        val system = ActorSystem("HelloSystem")
        system.actorOf(TestActor.props("testactor"), name = "testactor")
        system.terminate()
    }
}

object TestActor {
    def props(conf: String): Props = Props(new TestActor(conf))
    case class AnswerMe(txt: String)
}

class TestActor(conf: String) extends Actor {
    import TestActor._
    override def receive: PartialFunction[Any, Unit] = {
        case AnswerMe(txt) => {
            println(s"$txt")
            ?? ! "answer"
        }
    }
}

1 Ответ

0 голосов
/ 17 апреля 2020

Я просто сам разбираюсь. Я просто передам ActorSystem актеру, затем в актере он вызовет system.terminate. тогда он выйдет из родительского.

...