Example #1
0
        /// <summary>
        /// Returns the approximate number of queued messages
        /// </summary>
        public int ApproximateNumberOfMessages()
        {
            ClearErrorInfo();

            int result = 0;

            try
            {
                GetQueueAttributesRequest attrreq = new GetQueueAttributesRequest();
                attrreq.QueueUrl = queueurl.QueueUrl;
                attrreq.AttributeNames.Add("ApproximateNumberOfMessages");
                GetQueueAttributesResponse attrresp = queue.GetQueueAttributes(attrreq);
                if (attrresp != null)
                {
                    result = attrresp.ApproximateNumberOfMessages;
                }
            }
            catch (Exception ex)
            {
                ErrorCode    = e_Exception;
                ErrorMessage = ex.Message;
            }

            return(result);
        }
        /// <summary>
        /// Initializes the Amazon SQS client and then uses it to call the
        /// GetQueueAttributesAsync method to retrieve the attributes for the
        /// Amazon SQS queue.
        /// </summary>
        public static async Task Main()
        {
            // If the Amazon SQS message queue is not in the same AWS Region as your
            // default user, you need to provide the AWS Region as a parameter to the
            // client constructor.
            var client = new AmazonSQSClient();

            var queueUrl = "https://sqs.us-east-2.amazonaws.com/0123456789ab/New-Example-Queue";
            var attrs    = new List <string>()
            {
                "All"
            };

            var request = new GetQueueAttributesRequest
            {
                QueueUrl       = queueUrl,
                AttributeNames = attrs,
            };

            var response = await client.GetQueueAttributesAsync(request);

            if (response.HttpStatusCode == System.Net.HttpStatusCode.OK)
            {
                DisplayAttributes(response);
            }
        }
Example #3
0
 /// <inheritdoc/>
 public GetQueueAttributesResponse GetAttributes(GetQueueAttributesRequest request)
 {
     return(AggregateExceptionExtract.Extract(() =>
     {
         return GetAttributesAsync(request).Result;
     }));
 }
        internal GetQueueAttributesResponse GetQueueAttributes(GetQueueAttributesRequest request)
        {
            var marshaller   = new GetQueueAttributesRequestMarshaller();
            var unmarshaller = GetQueueAttributesResponseUnmarshaller.Instance;

            return(Invoke <GetQueueAttributesRequest, GetQueueAttributesResponse>(request, marshaller, unmarshaller));
        }
Example #5
0
        public void PopulateQueueAttributes(QueueDescription queue)
        {
            var req = new GetQueueAttributesRequest()
            {
                QueueUrl = queue.Url
            };

            req.AttributeNames.Add("ApproximateNumberOfMessages");
            req.AttributeNames.Add("MessageRetentionPeriod");

            var response = client.GetQueueAttributes(req);

            if (response.Attributes != null && response.Attributes.Any())
            {
                foreach (KeyValuePair <string, string> att in response.Attributes)
                {
                    switch (att.Key)
                    {
                    case "MessageRetentionPeriod":
                        queue.MessageRetentionPeriod = TimeSpan.FromSeconds(Double.Parse(att.Value));
                        break;

                    case "ApproximateNumberOfMessages":
                        queue.ApproximateNumberOfMessages = Int32.Parse(att.Value);
                        break;
                    }
                }
            }
        }
Example #6
0
        public MessageQueueDetail Build <T>(string uri)
        {
            var listResponse = _client.ListQueues(new ListQueuesRequest().WithQueueNamePrefix(uri));
            var exists       = listResponse.ListQueuesResult.QueueUrl.Any();

            if (exists)
            {
                var queue    = _client.GetQueueUrl(new GetQueueUrlRequest().WithQueueName(uri));
                var request  = new GetQueueAttributesRequest().WithQueueUrl(queue.GetQueueUrlResult.QueueUrl);
                var response = _client.GetQueueAttributes(request);

                return(new MessageQueueDetail
                {
                    MessageCount = response.GetQueueAttributesResult.ApproximateNumberOfMessages,
                    Uri = queue.GetQueueUrlResult.QueueUrl,
                    Exists = true
                });
            }
            else
            {
                return(new MessageQueueDetail
                {
                    MessageCount = null,
                    Uri = uri,
                    Exists = false
                });
            }
        }
Example #7
0
        private static void QueueInfo()
        {
            GetQueueAttributesRequest request = new GetQueueAttributesRequest
            {
                QueueUrl       = QUEUE_URL,
                AttributeNames = new List <string>()
                {
                    "All"
                }
            };

            var response = client.GetQueueAttributes(request);

            Console.WriteLine("Attributes for queue ARN '" + response.QueueARN + "':");
            Console.WriteLine("  Approximate number of messages:" + response.ApproximateNumberOfMessages);
            Console.WriteLine("  Approximate number of messages delayed: " + response.ApproximateNumberOfMessagesDelayed);
            Console.WriteLine("  Approximate number of messages not visible: " + response.ApproximateNumberOfMessagesNotVisible);
            Console.WriteLine("  Queue created on: " + response.CreatedTimestamp);
            Console.WriteLine("  Delay seconds: " + response.DelaySeconds);
            Console.WriteLine("  Queue last modified on: " + response.LastModifiedTimestamp);
            Console.WriteLine("  Maximum message size: " + response.MaximumMessageSize);
            Console.WriteLine("  Message retention period: " + response.MessageRetentionPeriod);
            Console.WriteLine("  Visibility timeout: " + response.VisibilityTimeout);
            Console.WriteLine("  Policy: " + response.Policy);
            Console.WriteLine("  Attributes:");

            foreach (var attr in response.Attributes)
            {
                Console.WriteLine("    " + attr.Key + ": " + attr.Value);
            }
        }
Example #8
0
        async Task ConfigureLambdaWithQueueAsync(string queueName)
        {
            string queueArn = null;

            AmazonSQSClient sqsClient = AwsFactory.CreateClient <AmazonSQSClient>();

            GetQueueUrlRequest queueUrlReq = new GetQueueUrlRequest();

            queueUrlReq.QueueName = queueName;

            GetQueueUrlResponse getQueueUrlResp = await sqsClient.GetQueueUrlAsync(queueUrlReq);

            GetQueueAttributesRequest queueAttribReq = new GetQueueAttributesRequest();

            queueAttribReq.AttributeNames.Add(QueueAttributeName.QueueArn);
            queueAttribReq.QueueUrl = getQueueUrlResp.QueueUrl;

            var queueAttribResp = await sqsClient.GetQueueAttributesAsync(queueAttribReq);

            queueArn = queueAttribResp.QueueARN;

            AmazonLambdaClient lambdaClient = AwsFactory.CreateClient <AmazonLambdaClient>();

            CreateEventSourceMappingRequest eventMappingReq = new CreateEventSourceMappingRequest();

            eventMappingReq.FunctionName   = "WebhookDispatcher";
            eventMappingReq.BatchSize      = 10;
            eventMappingReq.Enabled        = true;
            eventMappingReq.EventSourceArn = queueArn;

            await lambdaClient.CreateEventSourceMappingAsync(eventMappingReq);
        }
        private GetQueueAttributesResult GetTaskQueueAttr(Priority oPriority)
        {
            string strUrlQueue = GetQueueUrl(oPriority);

            GetQueueAttributesResult oGetQueueAttributesResult = null;

            try
            {
                using (AmazonSQS oSQSClient = AWSClientFactory.CreateAmazonSQSClient())
                {
                    GetQueueAttributesRequest oGetQueueAttributesRequest = new GetQueueAttributesRequest();
                    oGetQueueAttributesRequest.QueueUrl = strUrlQueue;

                    GetQueueAttributesResponse oGetQueueAttributesResponse = oSQSClient.GetQueueAttributes(oGetQueueAttributesRequest);
                    if (oGetQueueAttributesResponse.IsSetGetQueueAttributesResult())
                    {
                        oGetQueueAttributesResult = oGetQueueAttributesResponse.GetQueueAttributesResult;
                    }
                }
            }
            catch (AmazonSQSException)
            {
            }
            catch
            {
            }

            return(oGetQueueAttributesResult);
        }
Example #10
0
        /// <summary>
        /// Initiates the asynchronous execution of the GetQueueAttributes operation.
        /// <seealso cref="Amazon.SQS.IAmazonSQS"/>
        /// </summary>
        ///
        /// <param name="request">Container for the necessary parameters to execute the GetQueueAttributes operation.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        public Task <GetQueueAttributesResponse> GetQueueAttributesAsync(GetQueueAttributesRequest request, CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller   = new GetQueueAttributesRequestMarshaller();
            var unmarshaller = GetQueueAttributesResponseUnmarshaller.Instance;

            return(Invoke <IRequest, GetQueueAttributesRequest, GetQueueAttributesResponse>(request, marshaller, unmarshaller, signer, cancellationToken));
        }
Example #11
0
            void SetupTopicAndQueue()
            {
                long ticks = DateTime.Now.Ticks;

                // Setup SNS topic.
                snsClient = new AmazonSimpleNotificationServiceClient(
                    settings.AWSAccessKeyID,
                    settings.AWSSecretAccessKey,
                    RegionEndpoint.GetBySystemName(settings.AWSS3Region.SystemName));

                sqsClient = new AmazonSQSClient(
                    settings.AWSAccessKeyID,
                    settings.AWSSecretAccessKey,
                    RegionEndpoint.GetBySystemName(settings.AWSS3Region.SystemName));

                topicArn = snsClient.CreateTopic(new CreateTopicRequest {
                    Name = "GlacierDownload-" + ticks
                }).TopicArn;
                Debug.WriteLine($"topicArn: {topicArn}");

                var createQueueRequest = new CreateQueueRequest {
                    QueueName = "GlacierDownload-" + ticks
                };
                var createQueueResponse = sqsClient.CreateQueue(createQueueRequest);

                this.queueUrl = createQueueResponse.QueueUrl;
                Debug.WriteLine($"QueueURL: {this.queueUrl}");

                var getQueueAttributesRequest = new GetQueueAttributesRequest {
                    AttributeNames = new List <string> {
                        "QueueArn"
                    },
                    QueueUrl = this.queueUrl
                };
                var response = sqsClient.GetQueueAttributes(getQueueAttributesRequest);

                queueArn = response.QueueARN;
                Debug.WriteLine($"QueueArn: {queueArn}");

                // Setup the Amazon SNS topic to publish to the SQS queue.
                snsClient.Subscribe(new SubscribeRequest()
                {
                    Protocol = "sqs",
                    Endpoint = queueArn,
                    TopicArn = topicArn
                });

                // Add the policy to the queue so SNS can send messages to the queue.
                var policy = SQS_POLICY.Replace("{TopicArn}", topicArn).Replace("{QuernArn}", queueArn);

                sqsClient.SetQueueAttributes(new SetQueueAttributesRequest {
                    QueueUrl   = this.queueUrl,
                    Attributes = new Dictionary <string, string>
                    {
                        { QueueAttributeName.Policy, policy }
                    }
                });
            }
Example #12
0
        public async Task <GetQueueAttributesResponse> GetAttributesAsync(GetQueueAttributesRequest request)
        {
            request.QueueName = this.QueueName;

            var marshaller   = new GetQueueAttributesRequestMarshaller();
            var unmarshaller = GetQueueAttributesResponseUnmarshaller.Instance;

            return(await _serviceClient.InvokeAsync <GetQueueAttributesRequest, GetQueueAttributesResponse>(request, marshaller, unmarshaller).ConfigureAwait(false));
        }
Example #13
0
        private void CreateDLQ(AmazonSQSClient sqsClient)
        {
            try
            {
                var request = new CreateQueueRequest(_subscription.RedrivePolicy.DeadlLetterQueueName.Value);

                var createDeadLetterQueueResponse = sqsClient.CreateQueueAsync(request).GetAwaiter().GetResult();

                var queueUrl = createDeadLetterQueueResponse.QueueUrl;

                if (!string.IsNullOrEmpty(queueUrl))
                {
                    //We need the ARN of the dead letter queue to configure the queue redrive policy, not the name
                    var attributesRequest = new GetQueueAttributesRequest
                    {
                        QueueUrl       = queueUrl,
                        AttributeNames = new List <string> {
                            "QueueArn"
                        }
                    };
                    var attributesResponse = sqsClient.GetQueueAttributesAsync(attributesRequest).GetAwaiter().GetResult();

                    if (attributesResponse.HttpStatusCode != HttpStatusCode.OK)
                    {
                        throw new InvalidOperationException($"Could not find ARN of DLQ, status: {attributesResponse.HttpStatusCode}");
                    }

                    _dlqARN = attributesResponse.QueueARN;
                }
                else
                {
                    throw new InvalidOperationException($"Could not find create DLQ, status: {createDeadLetterQueueResponse.HttpStatusCode}");
                }
            }
            catch (QueueDeletedRecentlyException ex)
            {
                //QueueDeletedRecentlyException - wait 30 seconds then retry
                //Although timeout is 60s, we could be partway through that, so apply Copernican Principle
                //and assume we are halfway through
                var error = $"Could not create queue {_subscription.ChannelName.Value} because {ex.Message} waiting 60s to retry";
                s_logger.LogError(ex, error);
                Thread.Sleep(TimeSpan.FromSeconds(30));
                throw new ChannelFailureException(error, ex);
            }
            catch (AmazonSQSException ex)
            {
                var error = $"Could not create queue {_queueUrl} subscribed to topic {_subscription.RoutingKey.Value} in region {_awsConnection.Region.DisplayName} because {ex.Message}";
                s_logger.LogError(ex, error);
                throw new InvalidOperationException(error, ex);
            }
            catch (HttpErrorResponseException ex)
            {
                var error = $"Could not create queue {_queueUrl} subscribed to topic {_subscription.RoutingKey.Value} in region {_awsConnection.Region.DisplayName} because {ex.Message}";
                s_logger.LogError(ex, error);
                throw new InvalidOperationException(error, ex);
            }
        }
Example #14
0
        protected async Task <GetQueueAttributesResponse> GetAttrsAsync(IEnumerable <string> attrKeys)
        {
            var request = new GetQueueAttributesRequest {
                QueueUrl       = Url,
                AttributeNames = new List <string>(attrKeys)
            };

            return(await Client.GetQueueAttributesAsync(request).ConfigureAwait(false));
        }
Example #15
0
        /// <inheritdoc/>
        public GetQueueAttributesResponse GetAttributes(GetQueueAttributesRequest request)
        {
            request.QueueName = this.QueueName;

            var marshaller   = new GetQueueAttributesRequestMarshaller();
            var unmarshaller = GetQueueAttributesResponseUnmarshaller.Instance;

            return(_serviceClient.Invoke <GetQueueAttributesRequest, GetQueueAttributesResponse>(request, marshaller, unmarshaller));
        }
        static void SetupTopicAndQueue(Amazon.RegionEndpoint region)
        {
            long ticks = DateTime.Now.Ticks;

            // Setup SNS topic.
            s_snsClient = new AmazonSimpleNotificationServiceClient(region);
            s_sqsClient = new AmazonSQSClient(region);

            s_topicArn = s_snsClient.CreateTopic(new CreateTopicRequest
            {
                Name = "GlacierDownload-" + ticks
            }).TopicArn;

            WriteLogConsole("topicArn: " + s_topicArn);

            CreateQueueRequest createQueueRequest = new CreateQueueRequest();

            createQueueRequest.QueueName = "GlacierDownload-" + ticks;
            CreateQueueResponse createQueueResponse = s_sqsClient.CreateQueue(createQueueRequest);

            s_queueUrl = createQueueResponse.QueueUrl;

            WriteLogConsole("QueueURL: " + s_queueUrl);

            GetQueueAttributesRequest getQueueAttributesRequest = new GetQueueAttributesRequest();

            getQueueAttributesRequest.AttributeNames = new List <string> {
                "QueueArn"
            };
            getQueueAttributesRequest.QueueUrl = s_queueUrl;

            GetQueueAttributesResponse response = s_sqsClient.GetQueueAttributes(getQueueAttributesRequest);

            s_queueArn = response.QueueARN;
            WriteLogConsole("QueueArn: " + s_queueArn);

            // Setup the Amazon SNS topic to publish to the SQS queue.
            s_snsClient.Subscribe(new SubscribeRequest()
            {
                Protocol = "sqs",
                Endpoint = s_queueArn,
                TopicArn = s_topicArn
            });

            // Add the policy to the queue so SNS can send messages to the queue.
            var policy = SQS_POLICY.Replace("{TopicArn}", s_topicArn).Replace("{QuernArn}", s_queueArn);

            s_sqsClient.SetQueueAttributes(new SetQueueAttributesRequest()
            {
                QueueUrl   = s_queueUrl,
                Attributes = new Dictionary <string, string>
                {
                    { QueueAttributeName.Policy, policy }
                }
            });
        }
Example #17
0
        /// <inheritdoc/>
        public IAsyncResult BeginGetAttributes(GetQueueAttributesRequest request, AsyncCallback callback, object state)
        {
            request.QueueName = this.QueueName;

            var marshaller   = new GetQueueAttributesRequestMarshaller();
            var unmarshaller = GetQueueAttributesResponseUnmarshaller.Instance;

            return(_serviceClient.BeginInvoke <GetQueueAttributesRequest>(request, marshaller, unmarshaller,
                                                                          callback, state));
        }
        /// <summary>
        /// Gets the Queue's attributes
        /// </summary>
        /// <param name="client"></param>
        /// <param name="queueUrl"></param>
        /// <returns></returns>
        /// <remarks>
        /// All - returns all values.
        /// ApproximateNumberOfMessages — returns the approximate number of visible messages in a queue. For more information, see Resources Required to Process Messages in the Amazon SQS Developer Guide.
        /// ApproximateNumberOfMessagesNotVisible — returns the approximate number of messages that are not timed-out and not deleted. For more information, see Resources Required to Process Messages in the Amazon SQS Developer Guide.
        /// VisibilityTimeout — returns the visibility timeout for the queue. For more information about visibility timeout, see Visibility Timeout in the Amazon SQS Developer Guide.
        /// CreatedTimestamp — returns the time when the queue was created (epoch time in seconds).
        /// LastModifiedTimestamp — returns the time when the queue was last changed (epoch time in seconds).
        /// Policy — returns the queue's policy.
        /// MaximumMessageSize — returns the limit of how many bytes a message can contain before Amazon SQS rejects it.
        /// MessageRetentionPeriod — returns the number of seconds Amazon SQS retains a message.
        /// QueueArn — returns the queue's Amazon resource name (ARN).
        /// </remarks>
        public GetQueueAttributesResult GetQueueAttributes(AmazonSQS client, string queueUrl)
        {
            var request = new GetQueueAttributesRequest {
                QueueUrl = queueUrl, AttributeName = new List <string>(new[] { "All" })
            };

            GetQueueAttributesResponse response = client.GetQueueAttributes(request);

            return(response.GetQueueAttributesResult);
        }
Example #19
0
        protected async Task <int> CountMessagesInErrorQueue()
        {
            var attReq = new GetQueueAttributesRequest {
                QueueUrl = createdErrorQueue.QueueUrl
            };

            attReq.AttributeNames.Add("ApproximateNumberOfMessages");
            var response = await sqsClient.GetQueueAttributesAsync(attReq).ConfigureAwait(false);

            return(response.ApproximateNumberOfMessages);
        }
Example #20
0
        public bool HasMessages()
        {
            var request = new GetQueueAttributesRequest
            {
                QueueUrl       = QueueUrl,
                AttributeNames = new List <string>(new string[] { SQSConstants.ATTRIBUTE_APPROXIMATE_NUMBER_OF_MESSAGES })
            };
            var response = _sqsClient.GetQueueAttributes(request);

            return(response.ApproximateNumberOfMessages > 0);
        }
Example #21
0
        public int GetMessageCount()
        {
            var sqsRequest = new GetQueueAttributesRequest {
                QueueUrl = queueUrl
            };

            sqsRequest.AttributeNames.Add("ApproximateNumberOfMessages");
            var sqsResponse = client.GetQueueAttributes(sqsRequest);

            return(sqsResponse.ApproximateNumberOfMessages);
        }
Example #22
0
        /// <inheritdoc/>
        public async Task <long> GetMessageCountAsync(CancellationToken cancellationToken = default)
        {
            var request = new GetQueueAttributesRequest
            {
                QueueUrl = await GetQueueUrl().ConfigureAwait(false)
            };

            var response = await _client.GetQueueAttributesAsync(request, cancellationToken).ConfigureAwait(false);

            return(response.ApproximateNumberOfMessages);
        }
Example #23
0
        protected GetQueueAttributesResult GetAttrs(IEnumerable <string> attrKeys)
        {
            var request = new GetQueueAttributesRequest {
                QueueUrl       = Url,
                AttributeNames = new List <string>(attrKeys)
            };

            var result = Client.GetQueueAttributes(request);

            return(result);
        }
Example #24
0
        public GetQueueAttributesResponse DoGetQueueAttributes(GetQueueAttributesRequest request)
        {
            List <string> lParams = new List <string>();

            lParams.Add(string.Format("&AWSAccessKeyId={0}", Util.UrlEncode(AccessKey)));
            lParams.Add(string.Format("&Action={0}", "GetQueueAttributes"));
            lParams.Add(string.Format("&SignatureMethod={0}", "HmacSHA256"));
            lParams.Add(string.Format("&SignatureVersion={0}", "2"));
            lParams.Add(string.Format("&Timestamp={0}", Util.UrlEncode(DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ"))));
            lParams.Add(string.Format("&Version={0}", "2012-11-05"));

            for (int i = 0; i < request.AttributeNames.Count; i++)
            {
                lParams.Add(string.Format("&AttributeName.{0}={1}", i + 1, Util.UrlEncode(request.AttributeNames[i])));
            }

            lParams.Sort(StringComparer.Ordinal);

            var parameters = string.Join("", lParams);

            parameters = parameters.Substring(1);

            string sig = Util.GetSignature(request.QueueUrl, "GET", parameters, SecretKey);

            parameters = string.Format("{0}&Signature={1}", parameters, Util.UrlEncode(sig));

            var wRequest = WebRequest.Create(string.Format("{0}?{1}", request.QueueUrl, parameters)) as HttpWebRequest;

            wRequest.Method      = "GET";
            wRequest.ContentType = "application/x-www-form-urlencoded";
            wRequest.KeepAlive   = false;

            using (var response = wRequest.GetResponse() as HttpWebResponse)
                using (var stream = response.GetResponseStream())
                    using (var reader = new StreamReader(stream))
                    {
                        var body    = reader.ReadToEnd();
                        var element = XElement.Parse(body);

                        XmlSerializer serializer = new XmlSerializer(typeof(GetQueueAttributesResponse));
                        var           setQueueAttributesResponse = (GetQueueAttributesResponse)serializer.Deserialize(element.CreateReader());

                        foreach (var attribute in setQueueAttributesResponse.GetQueueAttributesResult.Attributes)
                        {
                            var propType  = typeof(GetQueueAttributesResult).GetProperty(attribute.Name);
                            var converter = TypeDescriptor.GetConverter(propType.PropertyType);
                            var value     = converter.ConvertFromString(attribute.Value);
                            propType.SetValue(setQueueAttributesResponse.GetQueueAttributesResult, value);
                        }

                        return(setQueueAttributesResponse);
                    }
        }
Example #25
0
        public bool HasAnyMessagesInQueue()
        {
            GetQueueAttributesRequest request = new GetQueueAttributesRequest(this.queueUrl, new List <string> ()
            {
                "ApproximateNumberOfMessages"
            });
            GetQueueAttributesResponse response = this.sqsClient.GetQueueAttributes(request);

            bool hasAnyMessagesInQueue = response.ApproximateNumberOfMessages > 0;

            return(hasAnyMessagesInQueue);
        }
        public int GetApproximateNumberOfMessagesInQueue()
        {
            var qar = new GetQueueAttributesRequest();

            qar.QueueUrl       = _queueUrl;
            qar.AttributeNames = new List <string> {
                "ApproximateNumberOfMessages"
            };
            var attributes = _sqsClient.GetQueueAttributes(qar);

            return(attributes.ApproximateNumberOfMessages);
        }
Example #27
0
        static void SetupTopicAndQueue(Amazon.RegionEndpoint awsRegion)
        {
            long ticks = DateTime.Now.Ticks;

            // Setup SNS topic.
            snsClient = new AmazonSimpleNotificationServiceClient(awsRegion);
            sqsClient = new AmazonSQSClient(awsRegion);

            topicArn = snsClient.CreateTopic(new CreateTopicRequest {
                Name = "GlacierInventory-" + ticks
            }).TopicArn;
            Console.WriteLine($"topicArn: {topicArn}");

            CreateQueueRequest createQueueRequest = new CreateQueueRequest();

            createQueueRequest.QueueName = "GlacierInventory-" + ticks;
            CreateQueueResponse createQueueResponse = sqsClient.CreateQueue(createQueueRequest);

            queueUrl = createQueueResponse.QueueUrl;
            Console.WriteLine($"QueueURL: {queueUrl}");

            GetQueueAttributesRequest getQueueAttributesRequest = new GetQueueAttributesRequest();

            getQueueAttributesRequest.AttributeNames = new List <string> {
                "QueueArn"
            };
            getQueueAttributesRequest.QueueUrl = queueUrl;
            GetQueueAttributesResponse response = sqsClient.GetQueueAttributes(getQueueAttributesRequest);

            queueArn = response.QueueARN;
            Console.WriteLine($"QueueArn: {queueArn}");

            // Setup the Amazon SNS topic to publish to the SQS queue.
            snsClient.Subscribe(new SubscribeRequest()
            {
                Protocol = "sqs",
                Endpoint = queueArn,
                TopicArn = topicArn
            });

            // Add the policy to the queue so SNS can send messages to the queue.
            var policy = SQS_POLICY.Replace("{TopicArn}", topicArn).Replace("{QuernArn}", queueArn).Replace("{AccountArn}", accountArn);

            sqsClient.SetQueueAttributes(new SetQueueAttributesRequest()
            {
                QueueUrl   = queueUrl,
                Attributes = new Dictionary <string, string>
                {
                    { QueueAttributeName.Policy, policy }
                }
            });
        }
Example #28
0
        public override async Task <long> ReadMessageCountAsync()
        {
            CheckOpened(null);

            var request = new GetQueueAttributesRequest()
            {
                QueueUrl       = _queue,
                AttributeNames = new List <string>(new string[] { QueueAttributeName.ApproximateNumberOfMessages })
            };
            var response = _client.GetQueueAttributesAsync(request, _cancel.Token).Result;

            return(response.ApproximateNumberOfMessages);
        }
Example #29
0
        public string GetQueueArn(Uri queueUrl)
        {
            // get queueArn
            var attributeRequest =
                new GetQueueAttributesRequest().WithQueueUrl(queueUrl.AbsoluteUri).WithAttributeName(
                    queueArnAttributeName);

            using (var sqs = amazonSqsFactory())
            {
                var queueAttributes = sqs.GetQueueAttributes(attributeRequest);
                return(queueAttributes.GetQueueAttributesResult.Attribute[0].Value);
            }
        }
        public GetQueueAttributesResponse GetQueueAttributes(string queueUrl)
        {
            List <string> list = new List <string>();

            list.Add("All");

            GetQueueAttributesRequest getQueueAttributesRequest = new GetQueueAttributesRequest {
                QueueUrl = queueUrl, AttributeNames = list
            };
            GetQueueAttributesResponse getQueueAttributesResponse = SQSClient.GetQueueAttributes(getQueueAttributesRequest);

            return(getQueueAttributesResponse);
        }