示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
 Task BackoffOnError(CancellationToken cancellationToken)
 {
     // run as there was no messages at all
     return(backoffStrategy.OnBatch(0, cancellationToken));
 }