Example #1
0
        private async Task queueRecentMatchPages(string gamertag, int pages)
        {
            _logger.LogInformation($"Queueing {gamertag}'s recent matches");

            var queueMessages = new QueueEvent[pages];

            for (var i = 0; i < pages; i++)
            {
                queueMessages[i] = new QueueEvent
                {
                    Type    = QueueEventTypes.CacheRecentMatches,
                    Payload = new MatchHistoryPayload
                    {
                        Gamertag = gamertag,
                        Page     = i + 1,
                    },
                };
            }

            var tasks        = new List <Task>();
            var chunkyChunks = queueMessages.Split(10);

            foreach (var chunk in chunkyChunks)
            {
                tasks.Add(_sqsClient.SendMessageBatchAsync(chunk));
            }

            _logger.LogInformation($"{gamertag} has {pages} pages of recent matches over {tasks.Count} tasks");

            await Task.WhenAll(tasks.ToArray());
        }