Versions Compared

Key

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

...

어떠한 기능을위해 그 상태 변경을 우리가 의도한 만큼 저장을 하고 복원을 할수가 있습니다.

상태 복원 전략은 시스템 업데이트뿐만아니라 장애처리 복구전략에서도 동일하게 사용될수가 그 방식을 선택할수가 있습니다.

스냅샷 구현

Code Block
final case class SnapshotMetadata(persistenceId: String, sequenceNr: Long, timestamp: Long = 0L)


private Object state;
private int snapShotInterval = 1000;

// 스냅샷을 지원하는 메시지 정의
@Override public Receive createReceive() {
  return receiveBuilder().
    match(SaveSnapshotSuccess.class, ss -> {
      SnapshotMetadata metadata = ss.metadata();
      // ...
    }).
    match(SaveSnapshotFailure.class, sf -> {
      SnapshotMetadata metadata = sf.metadata();
      // ...
    }).
    match(String.class, cmd -> {
      persist( "evt-" + cmd, e -> {
        updateState(e);
        if (lastSequenceNr() % snapShotInterval == 0 && lastSequenceNr() != 0)
          saveSnapshot(state);
      });
    }).build();
}

...