Beispiel #1
0
 public SqsQueueDefinition CreateQueue(string queueName, int?visibilityTimeoutSeconds = null,
                                       int?receiveWaitTimeSeconds     = null, bool?disasbleBuffering = null,
                                       SqsRedrivePolicy redrivePolicy = null)
 {
     return(CreateQueue(GetSqsQueueName(queueName), visibilityTimeoutSeconds, receiveWaitTimeSeconds,
                        disasbleBuffering, redrivePolicy));
 }
        public void To_qd_returns_correct_input_values()
        {
            var createdDt = DateTime.UtcNow.ToUnixTime();
            var rdPolicy = new SqsRedrivePolicy
            {
                DeadLetterTargetArn = "http://test.dlq.targetarn.com",
                MaxReceiveCount = 11
            };
            var qn = new SqsQueueName(Guid.NewGuid().ToString("N"));

            var attributes = new Dictionary<string, string>
            {
                { QueueAttributeName.VisibilityTimeout, "17" },
                { QueueAttributeName.ReceiveMessageWaitTimeSeconds, "16" },
                { QueueAttributeName.CreatedTimestamp, createdDt.ToString(CultureInfo.InvariantCulture) },
                { QueueAttributeName.ApproximateNumberOfMessages, "123456789" },
                { QueueAttributeName.QueueArn, "http://test.queue.arn.com" },
                { QueueAttributeName.RedrivePolicy, rdPolicy.ToJson() }
            };

            var qd = attributes.ToQueueDefinition(qn, "testQueueUrl", disableBuffering: true);

            Assert.IsTrue(ReferenceEquals(qd.SqsQueueName, qn), "SqsQueueName");
            Assert.AreEqual(qd.QueueUrl, "testQueueUrl", "QueueUrl");
            Assert.AreEqual(qd.QueueArn, "http://test.queue.arn.com", "QueueArn");
            Assert.AreEqual(qd.ApproximateNumberOfMessages, 123456789, "ApproxNumMessages");
            Assert.AreEqual(qd.VisibilityTimeout, 17, "VisibilityTimeout");
            Assert.AreEqual(qd.ReceiveWaitTime, 16, "ReceiveWaitTime");
            Assert.AreEqual(qd.RedrivePolicy.ToJson(), rdPolicy.ToJson(), "RedrivePolicy");
            Assert.AreEqual(qd.CreatedTimestamp, createdDt, "CreatedTimestamp");
            Assert.IsTrue(qd.DisableBuffering, "DisableBuffering");
        }
Beispiel #3
0
        private SqsQueueDefinition CreateQueue(SqsQueueName queueName, int?visibilityTimeoutSeconds = null,
                                               int?receiveWaitTimeSeconds     = null, bool?disasbleBuffering = null,
                                               SqsRedrivePolicy redrivePolicy = null)
        {
            SqsQueueDefinition queueDefinition = null;

            var request = new CreateQueueRequest
            {
                QueueName  = queueName.AwsQueueName,
                Attributes = new Dictionary <string, string>
                {
                    {
                        QueueAttributeName.ReceiveMessageWaitTimeSeconds,
                        TimeSpan.FromSeconds(receiveWaitTimeSeconds ?? DefaultReceiveWaitTime)
                        .TotalSeconds
                        .ToString(CultureInfo.InvariantCulture)
                    },
                    {
                        QueueAttributeName.VisibilityTimeout,
                        TimeSpan.FromSeconds(visibilityTimeoutSeconds ?? DefaultVisibilityTimeout)
                        .TotalSeconds
                        .ToString(CultureInfo.InvariantCulture)
                    },
                    {
                        QueueAttributeName.MessageRetentionPeriod,
                        (QueueNames.IsTempQueue(queueName.QueueName)
                            ? SqsQueueDefinition.DefaultTempQueueRetentionSeconds
                            : SqsQueueDefinition.DefaultPermanentQueueRetentionSeconds).ToString(CultureInfo.InvariantCulture)
                    }
                }
            };

            if (redrivePolicy != null)
            {
                var json = redrivePolicy.ToJson();
                request.Attributes.Add(QueueAttributeName.RedrivePolicy, json);
            }

            try
            {
                var createResponse = SqsClient.CreateQueue(request);

                // Note - must go fetch the attributes from the server after creation, as the request attributes do not include
                // anything assigned by the server (i.e. the ARN, etc.).
                queueDefinition = GetQueueDefinition(queueName, createResponse.QueueUrl);

                queueDefinition.DisableBuffering = disasbleBuffering ?? DisableBuffering;

                queueNameMap[queueDefinition.QueueName] = queueDefinition;
            }
            catch (QueueNameExistsException)
            {   // Queue exists with different attributes, instead of creating, alter those attributes to match what was requested
                queueDefinition = UpdateQueue(queueName, request.ToSetAttributesRequest(null), disasbleBuffering);
            }

            return(queueDefinition);
        }
        private SqsQueueDefinition CreateQueue(SqsQueueName queueName, int? visibilityTimeoutSeconds = null,
                                               int? receiveWaitTimeSeconds = null, bool? disasbleBuffering = null,
                                               SqsRedrivePolicy redrivePolicy = null)
        {
            SqsQueueDefinition queueDefinition = null;

            var request = new CreateQueueRequest
            {
                QueueName = queueName.AwsQueueName,
                Attributes = new Dictionary<string, string>
                {
                    {
                        QueueAttributeName.ReceiveMessageWaitTimeSeconds,
                        TimeSpan.FromSeconds(receiveWaitTimeSeconds ?? DefaultReceiveWaitTime)
                            .TotalSeconds
                            .ToString(CultureInfo.InvariantCulture)
                    },
                    {
                        QueueAttributeName.VisibilityTimeout,
                        TimeSpan.FromSeconds(visibilityTimeoutSeconds ?? DefaultVisibilityTimeout)
                            .TotalSeconds
                            .ToString(CultureInfo.InvariantCulture)
                    },
                    {
                        QueueAttributeName.MessageRetentionPeriod,
                        (QueueNames.IsTempQueue(queueName.QueueName)
                            ? SqsQueueDefinition.DefaultTempQueueRetentionSeconds
                            : SqsQueueDefinition.DefaultPermanentQueueRetentionSeconds).ToString(CultureInfo.InvariantCulture)
                    }
                }
            };

            if (redrivePolicy != null)
            {
                var json = AwsClientUtils.ToJson(redrivePolicy);
                request.Attributes.Add(QueueAttributeName.RedrivePolicy, json);
            }

            try
            {
                var createResponse = SqsClient.CreateQueue(request);

                // Note - must go fetch the attributes from the server after creation, as the request attributes do not include
                // anything assigned by the server (i.e. the ARN, etc.).
                queueDefinition = GetQueueDefinition(queueName, createResponse.QueueUrl);

                queueDefinition.DisableBuffering = disasbleBuffering ?? DisableBuffering;

                queueNameMap[queueDefinition.QueueName] = queueDefinition;
            }
            catch (QueueNameExistsException)
            {   // Queue exists with different attributes, instead of creating, alter those attributes to match what was requested
                queueDefinition = UpdateQueue(queueName, request.ToSetAttributesRequest(null), disasbleBuffering);
            }

            return queueDefinition;
        }
 public SqsQueueDefinition CreateQueue(string queueName, int? visibilityTimeoutSeconds = null,
                                       int? receiveWaitTimeSeconds = null, bool? disasbleBuffering = null,
                                       SqsRedrivePolicy redrivePolicy = null)
 {
     return CreateQueue(GetSqsQueueName(queueName), visibilityTimeoutSeconds, receiveWaitTimeSeconds,
                        disasbleBuffering, redrivePolicy);
 }