[Akka] Actor API

smlee·2023년 8월 22일
0

Akka

목록 보기
3/50
post-thumbnail

우리는 이전 게시물의 예제에서 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들이 있다.

  1. 자손 액터(actorOf)를 생성하는 팩토리 메서드
  2. 액터들이 속해 있는 시스템
  3. 액터 라이프사이클 모니터링

우리는 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가 붙은 것을 확인할 수 있다.

📚 Reference

0개의 댓글