public override async Task <bool> CreateAsync(SqsBasicConfiguration queueConfig, int attempt = 0) { if (NeedErrorQueue(queueConfig)) { var exists = await ErrorQueue.ExistsAsync().ConfigureAwait(false); if (!exists) { using (Logger.Time("Creating error queue {QueueName}", ErrorQueue.QueueName)) { await ErrorQueue.CreateAsync(new SqsBasicConfiguration { ErrorQueueRetentionPeriod = queueConfig.ErrorQueueRetentionPeriod, ErrorQueueOptOut = true }).ConfigureAwait(false); } } else { Logger.LogInformation("Error queue {QueueName} already exists, skipping", ErrorQueue.QueueName); } } using (Logger.Time("Creating queue {QueueName} attempt number {AttemptNumber}", queueConfig.QueueName, attempt)) { return(await base.CreateAsync(queueConfig, attempt).ConfigureAwait(false)); } }
public async Task Then_The_Message_Retention_Period_Is_Updated() { // Arrange ILoggerFactory loggerFactory = OutputHelper.ToLoggerFactory(); IAwsClientFactory clientFactory = CreateClientFactory(); var client = clientFactory.GetSqsClient(Region); var queue = new ErrorQueue( Region, UniqueName, client, loggerFactory); var queueConfig = new SqsBasicConfiguration() { ErrorQueueRetentionPeriod = JustSayingConstants.MaximumRetentionPeriod, ErrorQueueOptOut = true, }; // Act await queue.CreateAsync(queueConfig); queueConfig.ErrorQueueRetentionPeriod = TimeSpan.FromSeconds(100); await queue.UpdateQueueAttributeAsync(queueConfig, CancellationToken.None); // Assert queue.MessageRetentionPeriod.ShouldBe(TimeSpan.FromSeconds(100)); }
public override async Task <bool> CreateAsync(SqsBasicConfiguration queueConfig, int attempt = 0) { if (NeedErrorQueue(queueConfig)) { var exisits = await ErrorQueue.ExistsAsync(); if (!exisits) { await ErrorQueue.CreateAsync( new SqsBasicConfiguration { ErrorQueueRetentionPeriodSeconds = queueConfig.ErrorQueueRetentionPeriodSeconds, ErrorQueueOptOut = true }); } } return(await base.CreateAsync(queueConfig, attempt)); }
public async Task EnsureQueueAndErrorQueueExistAndAllAttributesAreUpdatedAsync(SqsReadConfiguration queueConfig) { if (queueConfig == null) { throw new ArgumentNullException(nameof(queueConfig)); } var exists = await ExistsAsync().ConfigureAwait(false); if (!exists) { await CreateAsync(queueConfig).ConfigureAwait(false); } else { await UpdateQueueAttributeAsync(queueConfig).ConfigureAwait(false); } await ApplyTagsAsync(this, queueConfig.Tags).ConfigureAwait(false); //Create an error queue for existing queues if they don't already have one if (ErrorQueue != null && NeedErrorQueue(queueConfig)) { var errorQueueConfig = new SqsReadConfiguration(SubscriptionType.ToTopic) { ErrorQueueRetentionPeriod = queueConfig.ErrorQueueRetentionPeriod, ErrorQueueOptOut = true }; var errorQueueExists = await ErrorQueue.ExistsAsync().ConfigureAwait(false); if (!errorQueueExists) { await ErrorQueue.CreateAsync(errorQueueConfig).ConfigureAwait(false); } else { await ErrorQueue.UpdateQueueAttributeAsync(errorQueueConfig).ConfigureAwait(false); } await UpdateRedrivePolicyAsync( new RedrivePolicy(queueConfig.RetryCountBeforeSendingToErrorQueue, ErrorQueue.Arn)).ConfigureAwait(false); await ApplyTagsAsync(ErrorQueue, queueConfig.Tags).ConfigureAwait(false); } }
public async Task EnsureQueueAndErrorQueueExistAndAllAttributesAreUpdatedAsync(SqsBasicConfiguration queueConfig) { var exists = await ExistsAsync(); if (!exists) { await CreateAsync(queueConfig); } else { await UpdateQueueAttributeAsync(queueConfig); } //Create an error queue for existing queues if they don't already have one if (ErrorQueue != null && NeedErrorQueue(queueConfig)) { var errorQueueConfig = new SqsReadConfiguration(SubscriptionType.ToTopic) { ErrorQueueRetentionPeriodSeconds = queueConfig.ErrorQueueRetentionPeriodSeconds, ErrorQueueOptOut = true }; var errorQueueExists = await ErrorQueue.ExistsAsync(); if (!errorQueueExists) { await ErrorQueue.CreateAsync(errorQueueConfig); } else { await ErrorQueue.UpdateQueueAttributeAsync(errorQueueConfig); } await UpdateRedrivePolicyAsync( new RedrivePolicy(queueConfig.RetryCountBeforeSendingToErrorQueue, ErrorQueue.Arn)); } }