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); }
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); }