우리는 이전 게시물의 예제에서 Actor
라는 trait를 상속 받아 원하는 액터 객체를 생성했다. 그리고, Actor trait 안에 있는 receive
메서드를 사용하여 액터의 행위를 선언하였다.
이번 포스트에서는 이외에도 많은 Actor API들을 알아보려고 한다.
만약, 현재 액터의 behavior가 수신된 메시지와 일치하지 않으면, unhandle
이 호출된다. unhandle은 akka.actor.UnhandledMessage(message, sender, recipient)
에 디폴트로 퍼블리싱된 메서드이다. (Debug message를 세팅할 수 있다.)
그리고 Actor API들은 다음과 같은 기능들 역시 제공한다.
1. 액터의 ActorRef에 대한 레퍼런스인 self
2. 수신된 메시지 중 가장 최신 메시지를 보낸 발신자를 호출하는 sender
3. supervisorStrategy
는 자손 액터를 감시할 수 있는 오버라이딩 가능한 정의이다.
context
는 액터에 대한 문맥적인 정보와 현재 메시지들을 노출시키는 역할을 한다.
예를 들어 다음과 같은 API들이 있다.
우리는 context
의 멤버를 접두사 context.
을 붙여 사용할 수 있다.
object DemoActor {
def props(magicNumber: Int): Props = Props(new DemoActor(magicNumber))
}
class DemoActor(magicNumber: Int) extends Actor {
def receive = {
case x: Int => sender() ! (x + magicNumber)
}
}
class SomeOtherActor extends Actor {
context.actorOf(DemoActor.props(42), "demo")
}
이전 포스트에서 사용했던 코드이다. context.actorOf
에서 접두사처럼 context가 붙은 것을 확인할 수 있다.