public static void CopyFrom(this SqsPollingQueueReaderOptions destination, SqsPollingQueueReaderOptions source)
 {
     destination.QueueUrl              = source.QueueUrl;
     destination.ChannelCapacity       = source.ChannelCapacity;
     destination.MaxMessages           = source.MaxMessages;
     destination.PollTimeInSeconds     = source.PollTimeInSeconds;
     destination.InitialDelay          = source.InitialDelay;
     destination.MaxDelay              = source.MaxDelay;
     destination.DelayWhenOverLimit    = source.DelayWhenOverLimit;
     destination.ReceiveMessageRequest = source.ReceiveMessageRequest;
 }
        public static SqsPollingQueueReaderOptions GetPollingQueueReaderOptions(this IConfiguration configuration)
        {
            _ = configuration ?? throw new ArgumentNullException(nameof(configuration));

            var section = configuration.GetSection("SQSToolbox");

            var options = new SqsPollingQueueReaderOptions
            {
                QueueUrl = section.GetValue <string>("QueueUrl", null)
            };

            return(options);
        }
예제 #3
0
        private static async Task Main(string[] args)
        {
            //var observer = new ExampleDiagnosticObserver();

            //DiagnosticListener.AllListeners.Subscribe(observer);

            var f = new SharedCredentialsFile(SharedCredentialsFile.DefaultFilePath);

            f.TryGetProfile("default", out var profile);

            var credentials = profile.GetAWSCredentials(null);

            var client = new AmazonSQSClient(credentials, RegionEndpoint.EUWest2);

            var options = new SqsPollingQueueReaderOptions {
                QueueUrl = "https://sqs.eu-west-1.amazonaws.com/123456789012/test-queue"
            };

            //using var pollingReader = new SqsPollingQueueReader(options, client, new SqsReceiveDelayCalculator(options), null);

            //using var deleter = new SqsBatchDeleter(new SqsBatchDeletionOptions { MaxWaitForFullBatch = TimeSpan.FromSeconds(10), DrainOnStop = true, QueueUrl = "https://sqs.eu-west-1.amazonaws.com/123456789012/test-queue" }, client);

            //using var cts = new CancellationTokenSource(TimeSpan.FromMinutes(5));

            //var readingTask = ReadFromChannelAsync(pollingReader.ChannelReader, deleter, cts.Token);

            //deleter.Start(cts.Token);
            //pollingReader.Start(cts.Token);

            //await readingTask;

            //for (var i = 0; i < 26; i++)
            //{
            //    await deleter.AddMessageAsync(new Message{ MessageId = Guid.NewGuid().ToString() }, cts.Token);
            //}

            //deleter.Start(cts.Token);

            //await Task.Delay(TimeSpan.FromSeconds(8), cts.Token);

            //await deleter.AddMessageAsync(new Message { MessageId = Guid.NewGuid().ToString() }, cts.Token);

            //await Task.Delay(TimeSpan.FromSeconds(15), cts.Token);

            //for (var i = 0; i < 11; i++)
            //{
            //    await deleter.AddMessageAsync(new Message { MessageId = Guid.NewGuid().ToString() }, cts.Token);
            //}

            //var messages = Enumerable.Range(0, 57).Select(x => new Message {MessageId = Guid.NewGuid().ToString()}).ToArray();

            //await deleter.AddMessagesAsync(messages, cts.Token);

            //await Task.Delay(TimeSpan.FromSeconds(10), cts.Token);

            //for (var i = 0; i < 2; i++)
            //{
            //    await deleter.AddMessageAsync(new Message{ MessageId = "ABC" }, cts.Token);
            //}

            //await Task.Delay(TimeSpan.FromSeconds(10), cts.Token);

            //await deleter.StopAsync();

            //await Task.Delay(Timeout.Infinite, cts.Token);
        }