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));
        }