internal async Task Receive(int batchSize, List <MessageRetrieved> receivedMessages, BackoffStrategy backoffStrategy, CancellationToken token) { var rawMessages = await inputQueue.GetMessagesAsync(batchSize, MessageInvisibleTime, null, null, token).ConfigureAwait(false); // ReSharper disable once LoopCanBeConvertedToQuery foreach (var rawMessage in rawMessages) { receivedMessages.Add(new MessageRetrieved(unwrapper, rawMessage, inputQueue, errorQueue)); } await backoffStrategy.OnBatch(receivedMessages.Count, token).ConfigureAwait(false); }
internal async Task <List <MessageRetrieved> > Receive(BackoffStrategy backoffStrategy, CancellationToken token) { var rawMessages = await inputQueue.GetMessagesAsync(BatchSize, MessageInvisibleTime, null, null, token).ConfigureAwait(false); var messageFound = false; List <MessageRetrieved> messages = null; foreach (var rawMessage in rawMessages) { if (!messageFound) { messages = new List <MessageRetrieved>(BatchSize); messageFound = true; } messages.Add(new MessageRetrieved(unwrapper, rawMessage, inputQueue, errorQueue)); } await backoffStrategy.OnBatch(messageFound?messages.Count : 0, token).ConfigureAwait(false); return(messageFound ? messages : noMessagesFound); }
Task BackoffOnError(CancellationToken cancellationToken) { // run as there was no messages at all return(backoffStrategy.OnBatch(0, cancellationToken)); }