Amazon.SQS.AmazonSQSClient.CreateQueueAsync C# (CSharp) Method

CreateQueueAsync() public method

Creates a new standard or FIFO queue or returns the URL of an existing queue. You can pass one or more attributes in the request. Keep the following caveats in mind:
  • If you don't specify the FifoQueue attribute, Amazon SQS creates a standard queue.

    You can't change the queue type after you create it and you can't convert an existing standard queue into a FIFO queue. You must either create a new FIFO queue for your application or delete your existing standard queue and recreate it as a FIFO queue. For more information, see Moving From a Standard Queue to a FIFO Queue in the Amazon SQS Developer Guide.

  • If you don't provide a value for an attribute, the queue is created with the default value for the attribute.

  • If you delete a queue, you must wait at least 60 seconds before creating a queue with the same name.

To successfully create a new queue, you must provide a queue name that adheres to the limits related to queues and is unique within the scope of your queues.

To get the queue URL, use the GetQueueUrl action. GetQueueUrl requires only the QueueName parameter. be aware of existing queue names:

  • If you provide the name of an existing queue along with the exact names and values of all the queue's attributes, CreateQueue returns the queue URL for the existing queue.

  • If the queue name, attribute names, or attribute values don't match an existing queue, CreateQueue returns an error.

Some actions take lists of parameters. These lists are specified using the param.n notation. Values of n are integers starting from 1. For example, a parameter list with two elements looks like this:

&Attribute.1=this

&Attribute.2=that

/// You must wait 60 seconds after deleting a queue before you can create another one /// with the same name. /// /// A queue already exists with this name. Amazon SQS returns this error only if the request /// includes attributes whose values differ from those of the existing queue. ///
public CreateQueueAsync ( string queueName, System cancellationToken = default(CancellationToken) ) : Task
queueName string The name of the new queue. The following limits apply to this name:
  • A queue name can have up to 80 characters.
  • Valid values: alphanumeric characters, hyphens (-), and underscores (_).
  • A FIFO queue name must end with the .fifo suffix.
Queue names are case-sensitive.
cancellationToken System /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. ///
return Task
        public Task<CreateQueueResponse> CreateQueueAsync(string queueName, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var request = new CreateQueueRequest();
            request.QueueName = queueName;
            return CreateQueueAsync(request, cancellationToken);
        }

Same methods

AmazonSQSClient::CreateQueueAsync ( CreateQueueRequest request, System cancellationToken = default(CancellationToken) ) : Task
AmazonSQSClient::CreateQueueAsync ( CreateQueueRequest request, CreateQueueResponse>.AmazonServiceCallback callback, AsyncOptions options = null ) : void
AmazonSQSClient::CreateQueueAsync ( string queueName, CreateQueueResponse>.AmazonServiceCallback callback, AsyncOptions options = null ) : void

Usage Example

Example #1
0
        /// <summary>
        /// Ensure sqs queue creation
        /// </summary>
        /// <param name="snsTopicArn">Subscribe to a sns topic</param>
        /// <returns></returns>
        public async Task EnsureQueueCreationAsync(string snsTopicArn = null)
        {
            // an integer representing seconds, from 60 (1 minute) to 1,209,600 (14 days). Default: 345,600 (4 days).
            var messageRetentionPeriod = "1209600";

            using (var client = new Amazon.SQS.AmazonSQSClient(accessKey, secretKey, region))
            {
                // dead letter queue
                var req = new CreateQueueRequest("dead-" + queueName);
                req.Attributes.Add(QueueAttributeName.MessageRetentionPeriod, messageRetentionPeriod);
                if (isFIFO)
                {
                    req.Attributes.Add(QueueAttributeName.FifoQueue, "true");
                }

                var r = await client.CreateQueueAsync(req);

                string deadQueueArn = r.QueueUrl
                                      .Replace("https://sqs.", "arn:aws:sqs:")
                                      .Replace(".amazonaws.com", "")
                                      .Replace("/", ":");

                // queue
                req = new CreateQueueRequest(queueName);
                req.Attributes.Add(QueueAttributeName.MessageRetentionPeriod, messageRetentionPeriod);
                req.Attributes.Add(QueueAttributeName.RedrivePolicy, "{\"maxReceiveCount\":3, \"deadLetterTargetArn\": \"" + deadQueueArn + "\"}");
                if (isFIFO)
                {
                    req.Attributes.Add(QueueAttributeName.FifoQueue, "true");
                }

                r = await client.CreateQueueAsync(req);

                // subscribe to sns topic
                if (!string.IsNullOrEmpty(snsTopicArn))
                {
                    await notificationService.SubscribeSQS(snsTopicArn, client, r.QueueUrl);
                }
            }
        }
AmazonSQSClient