Page History
...
Code Block | ||||
---|---|---|---|---|
| ||||
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의 기능은 유용합니다.
참고 :