Esempio n. 1
0
        /// <summary>
        /// Rejects the specified message.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="requeue">if set to <c>true</c> [requeue].</param>
        public void Reject(Message message, bool requeue)
        {
            if (!message.Header.Bag.ContainsKey("ReceiptHandle"))
            {
                return;
            }

            var receiptHandle = message.Header.Bag["ReceiptHandle"].ToString();

            try
            {
                _logger.InfoFormat("SqsMessageConsumer: Rejecting the message {0} with receipt handle {1} on the queue {2} with requeue paramter {3}", message.Id, receiptHandle, _queueUrl, requeue);

                using (var client = new AmazonSQSClient())
                {
                    if (requeue)
                    {
                        client.ChangeMessageVisibility(new ChangeMessageVisibilityRequest(_queueUrl, receiptHandle, 0));
                    }
                    else
                    {
                        client.DeleteMessage(_queueUrl, receiptHandle);
                    }
                }

                _logger.InfoFormat("SqsMessageConsumer: Message {0} with receipt handle {1} on the queue {2} with requeue paramter {3} has been rejected", message.Id, receiptHandle, _queueUrl, requeue);
            }
            catch (Exception exception)
            {
                _logger.ErrorException("SqsMessageConsumer: Error during rejecting the message {0} with receipt handle {1} on the queue {2}", exception, message.Id, receiptHandle, _queueUrl);
                throw;
            }
        }
Esempio n. 2
0
        public static void SQSChangeMessageVisibility()
        {
            #region SQSChangeMessageVisibility
            var client = new AmazonSQSClient();

            var url = "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyTestQueue";

            // Receive messages.
            var rcvRequest = new ReceiveMessageRequest
            {
                AttributeNames = new List <string>()
                {
                    "All"
                },
                QueueUrl = url
            };

            var rcvResponse = client.ReceiveMessage(rcvRequest);

            // Change visibility timeout for each message.
            if (rcvResponse.Messages.Count > 0)
            {
                foreach (var message in rcvResponse.Messages)
                {
                    var visRequest = new ChangeMessageVisibilityRequest
                    {
                        QueueUrl          = url,
                        ReceiptHandle     = message.ReceiptHandle,
                        VisibilityTimeout = (int)TimeSpan.FromMinutes(10).TotalSeconds
                    };

                    client.ChangeMessageVisibility(visRequest);
                }
            }
            else
            {
                Console.WriteLine("No messages to change visibility for.");
            }
            #endregion
        }
Esempio n. 3
0
        public void ChangeMessageVisibility()
        {
            AmazonSQSClient client   = new AmazonSQSClient();
            string          queueUrl = "SQS_QUEUE_URL";

            var receiveMessageRequest = new ReceiveMessageRequest
            {
                AttributeNames        = { "SentTimestamp" },
                MaxNumberOfMessages   = 1,
                MessageAttributeNames = { "All" },
                QueueUrl = queueUrl
            };

            var response = client.ReceiveMessage(receiveMessageRequest);

            var changeMessageVisibilityRequest = new ChangeMessageVisibilityRequest
            {
                QueueUrl          = queueUrl,
                ReceiptHandle     = response.Messages[0].ReceiptHandle,
                VisibilityTimeout = 36000, // 10 hour timeout
            };

            client.ChangeMessageVisibility(changeMessageVisibilityRequest);
        }