Пример #1
0
        public void Handle(ProjectionSubscriptionMessage.CommittedEventReceived message)
        {
            if (IsOutOfOrderSubscriptionMessage(message))
            {
                return;
            }
            RegisterSubscriptionMessage(message);

            EnsureState(
                State.Running | State.Paused | State.Stopping | State.Stopped | State.FaultedStopping | State.Faulted);
            try
            {
                if (_state == State.Running || _state == State.Paused)
                {
                    CheckpointTag eventTag  = message.CheckpointTag;
                    string        partition = _checkpointStrategy.StatePartitionSelector.GetStatePartition(message);
                    var           committedEventWorkItem = new CommittedEventWorkItem(this, message, partition);
                    _processingQueue.EnqueueTask(committedEventWorkItem, eventTag);
                }
                _processingQueue.ProcessEvent();
            }
            catch (Exception ex)
            {
                SetFaulted(ex);
            }
        }
Пример #2
0
 public void Handle(EventReaderSubscriptionMessage.ProgressChanged message)
 {
     if (IsOutOfOrderSubscriptionMessage(message))
     {
         return;
     }
     RegisterSubscriptionMessage(message);
     try
     {
         var progressWorkItem = new ProgressWorkItem(_checkpointManager, message.Progress);
         _processingQueue.EnqueueTask(progressWorkItem, message.CheckpointTag, allowCurrentPosition: true);
         ProcessEvent();
     }
     catch (Exception ex)
     {
         _coreProjection.SetFaulted(ex);
     }
 }