protected override void OnRecoveryFailure(Exception reason, object message = null) { base.OnRecoveryFailure(reason, message); if (State == null) { Self.GracefulStop(TimeSpan.FromSeconds(3)); } else { State = new ConsultantState(State.ConsultantId); DeleteSnapshots(new SnapshotSelectionCriteria(0)); DeleteMessages(0); Persist(State, null); } }
public ConsultantActor(int consultantId) { PersistenceId = consultantId.ToString(); Command <RegisterConsultant>(m => { Persist(m, message => { State = new ConsultantState(message.ConsultantId); //SaveSnapshot(State); }); }); Recover <SnapshotOffer>( offer => offer.Snapshot is ConsultantState, offer => State = offer.Snapshot as ConsultantState); Command <SaveSnapshotSuccess>(success => { DeleteMessages(success.Metadata.SequenceNr); }); SetReceiveTimeout(TimeSpan.FromMinutes(5)); }