Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
themeEmacs
public class Swapper extends AbstractLoggingActor {
  @Override
  public Receive createReceive() {
    return receiveBuilder()
      .matchEquals(Swap, s -> {
        log().info("Hi");
        getContext().become(receiveBuilder().
          matchEquals(Swap, x -> {
            log().info("Ho");
            getContext().unbecome(); // resets the latest 'become' (just for fun)
          }).build(), false); // push on top instead of replace
      }).build();
  }
}

public class SwapperApp {
  public static void main(String[] args) {
    ActorSystem system = ActorSystem.create("SwapperSystem");
    ActorRef swapper = system.actorOf(Props.create(Swapper.class), "swapper");
    swapper.tell(Swap, ActorRef.noSender()); // logs Hi
    swapper.tell(Swap, ActorRef.noSender()); // logs Ho
    swapper.tell(Swap, ActorRef.noSender()); // logs Hi
    swapper.tell(Swap, ActorRef.noSender()); // logs Ho
    swapper.tell(Swap, ActorRef.noSender()); // logs Hi
    swapper.tell(Swap, ActorRef.noSender()); // logs Ho
    system.terminate();
  }
}

더복잡한 상태를 가지게될시 AKKA의 FSM 추상화 객체활용이 가능하며

상태의 저장까지 책임지는 영속성 Part에서는 FSM을 조금더 유연하게 활용가능합니다.

이것은 나중에 영속성 Part를 먼저 살표보고 FSM을 다시한번 설명예정입니다.

참고 :Part에서도 FSM의 기능은 유용합니다.

참고 :