Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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));
            }
        }