Page History
...
어떠한 기능을위해 그 상태 변경을 우리가 의도한 만큼 저장을 하고 복원을 할수가 있습니다.
상태 복원 전략은 시스템 업데이트뿐만아니라 장애처리 복구전략에서도 동일하게 사용될수가 그 방식을 선택할수가 있습니다.
스냅샷 구현
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(); } |
...