public static async Task CreateQueuesForEndpoint(string endpointName, string templatePath, TimeSpan?maxTimeToLive = null, string queueNamePrefix = null, bool includeRetries = false, string delayedDeliveryMethod = "Native") { using (var client = ClientFactory.CreateCloudFormationClient()) { var endpointNameWithPrefix = QueueNameHelper.GetSqsQueueName(endpointName, queueNamePrefix); var request = new CreateStackRequest { StackName = endpointNameWithPrefix, Parameters = new List <Parameter> { new Parameter { ParameterKey = "EndpointName", ParameterValue = endpointNameWithPrefix }, new Parameter { ParameterKey = "MaxTimeToLive", ParameterValue = Convert.ToInt32((maxTimeToLive ?? QueueCreationUtils.DefaultTimeToLive).TotalSeconds).ToString() }, new Parameter { ParameterKey = "IncludeRetries", ParameterValue = includeRetries.ToString() }, new Parameter { ParameterKey = "DelayedDeliveryMethod", ParameterValue = delayedDeliveryMethod }, }, TemplateBody = CloudFormationHelper.ConvertToValidJson(templatePath) }; await client.CreateStackAsync(request) .ConfigureAwait(false); var describeRequest = new DescribeStacksRequest { StackName = endpointNameWithPrefix }; StackStatus currentStatus = string.Empty; while (currentStatus != StackStatus.CREATE_COMPLETE) { var response = await client.DescribeStacksAsync(describeRequest) .ConfigureAwait(false); var stack = response.Stacks.SingleOrDefault(); currentStatus = stack?.StackStatus; await Task.Delay(1000); } } }
public static async Task CreateQueue(string queueName, string templatePath, TimeSpan?maxTimeToLive = null, string queueNamePrefix = null) { using (var client = ClientFactory.CreateCloudFormationClient()) { var sqsQueueName = QueueNameHelper.GetSqsQueueName(queueName, queueNamePrefix); var request = new CreateStackRequest { StackName = sqsQueueName, Parameters = new List <Parameter> { new Parameter { ParameterKey = "QueueName", ParameterValue = sqsQueueName }, new Parameter { ParameterKey = "MaxTimeToLive", ParameterValue = Convert.ToInt32((maxTimeToLive ?? DefaultTimeToLive).TotalSeconds).ToString() } }, TemplateBody = CloudFormationHelper.ConvertToValidJson(templatePath) }; await client.CreateStackAsync(request) .ConfigureAwait(false); var describeRequest = new DescribeStacksRequest { StackName = sqsQueueName }; StackStatus currentStatus = string.Empty; while (currentStatus != StackStatus.CREATE_COMPLETE) { var response = await client.DescribeStacksAsync(describeRequest) .ConfigureAwait(false); var stack = response.Stacks.SingleOrDefault(); currentStatus = stack?.StackStatus; await Task.Delay(1000); } } }