Example #1
0
 /// <inheritdoc/>
 protected override Task <IStreamProcessorState> OnRetryProcessingResult(FailedProcessing failedProcessing, StreamEvent processedEvent, IStreamProcessorState currentState) =>
 _failingPartitions.AddFailingPartitionFor(
     Identifier,
     currentState as StreamProcessorState,
     processedEvent.Position,
     processedEvent.Partition,
     DateTimeOffset.UtcNow.Add(failedProcessing.RetryTimeout),
     failedProcessing.FailureReason,
     CancellationToken.None);
Example #2
0
    /// <inheritdoc/>
    protected override async Task <IStreamProcessorState> OnRetryProcessingResult(FailedProcessing failedProcessing, StreamEvent processedEvent, IStreamProcessorState currentState)
    {
        var oldState = currentState as StreamProcessorState;
        var newState = new StreamProcessorState(
            oldState.Position,
            failedProcessing.FailureReason,
            DateTimeOffset.UtcNow.Add(failedProcessing.RetryTimeout),
            oldState.ProcessingAttempts + 1,
            oldState.LastSuccessfullyProcessed,
            true);
        await _streamProcessorStates.Persist(Identifier, newState, CancellationToken.None).ConfigureAwait(false);

        return(newState);
    }
Example #3
0
 /// <summary>
 ///  Gets the new <see cref="IStreamProcessorState" /> after hanling the event of a <see cref="IProcessingResult" /> that signifies that the <see cref="StreamEvent" /> should not be processed again.
 /// </summary>
 /// <param name="failedProcessing">The <see cref="FailedProcessing" /> <see cref="IProcessingResult" />.</param>
 /// <param name="processedEvent">The <see cref="StreamEvent" /> that was processed.</param>
 /// <param name="currentState">The current <see cref="IStreamProcessorState" />.</param>
 /// <returns>A <see cref="Task" /> that, when resolved, returns the new <see cref="IStreamProcessorState" />.</returns>
 protected abstract Task <IStreamProcessorState> OnFailedProcessingResult(FailedProcessing failedProcessing, StreamEvent processedEvent, IStreamProcessorState currentState);