public void Pipeline_state_is_persisted() { string pipelineName = Guid.NewGuid().ToString(); var emptyState = _sut.GetLastProcessedSequentialNumber(pipelineName); emptyState.Should().Be(0); var headers = new Dictionary <string, object>(); var commit = new Commit(Guid.NewGuid(), 1, Guid.NewGuid(), 1, DateTime.UtcNow, headers, new List <EventMessage>() { new EventMessage() }); _sut.Commit(commit); _sut.MarkLastProcessed(pipelineName, commit.StreamId, commit.CommitId); var setState = _sut.GetLastProcessedSequentialNumber(pipelineName); setState.Should().NotBe(0); }
public IEnumerable <IProcessingElement> Fetch(string pipelineName, int maxCount) { if (_lastCommitSequentialId == EmtpySequentialIdValue) { _lastCommitSequentialId = _streamStore.GetLastProcessedSequentialNumber(pipelineName); } var commits = _streamStore.Fetch(_lastCommitSequentialId, maxCount); foreach (var commit in commits) { var thisCommitSequentialId = (long)commit.Headers["SequentialId"]; if (_firstCommitFetched && _lastCommitSequentialId == thisCommitSequentialId) { continue; } _lastCommitSequentialId = thisCommitSequentialId; foreach (EventMessage eventMessage in commit.Events) { var storedEvent = (StoredEvent)eventMessage.Body; yield return(new SourcedEventProcessingElement(storedEvent.Convert(commit.StreamId))); } _firstCommitFetched = true; } }