/// <summary>
        /// The DeleteMessage action unconditionally removes the specified message from the specified queue. Even if the message is locked by another reader due to the visibility timeout setting, it is still deleted from the queue.
        /// 
        /// </summary>
        /// <param name="service">Instance of AmazonSQS service</param>
        /// <param name="request">DeleteMessageRequest request</param>
        public static void InvokeDeleteMessage(AmazonSQS service, DeleteMessageRequest request)
        {
            try 
            {
                DeleteMessageResponse response = service.DeleteMessage(request);
                
                
                Console.WriteLine ("Service Response");
                Console.WriteLine ("=============================================================================");
                Console.WriteLine ();

                Console.WriteLine("        DeleteMessageResponse");
                if (response.IsSetResponseMetadata()) 
                {
                    Console.WriteLine("            ResponseMetadata");
                    ResponseMetadata  responseMetadata = response.ResponseMetadata;
                    if (responseMetadata.IsSetRequestId()) 
                    {
                        Console.WriteLine("                RequestId");
                        Console.WriteLine("                    {0}", responseMetadata.RequestId);
                    }
                } 

            } 
            catch (AmazonSQSException ex) 
            {
                Console.WriteLine("Caught Exception: " + ex.Message);
                Console.WriteLine("Response Status Code: " + ex.StatusCode);
                Console.WriteLine("Error Code: " + ex.ErrorCode);
                Console.WriteLine("Error Type: " + ex.ErrorType);
                Console.WriteLine("Request ID: " + ex.RequestId);
                Console.WriteLine("XML: " + ex.XML);
            }
        }
        private void ReceiveMessage()
        {
            var receiveMessageRequest = new ReceiveMessageRequest();

            receiveMessageRequest.QueueUrl = _handler.QueueUrl;
            var receiveMessageResponse = _sqsClient.ReceiveMessage(receiveMessageRequest);

            if (receiveMessageResponse.IsSetReceiveMessageResult() && receiveMessageResponse.ReceiveMessageResult.Message.Count > 0)
            {
                Console.WriteLine("Received message");
                var receiveMessageResult = receiveMessageResponse.ReceiveMessageResult;
                foreach (Message message in receiveMessageResult.Message)
                {
                    Console.WriteLine("Message body: {0}", message.Body);
                    foreach (var handler in Container.GetAll <IServiceHandler>())
                    {
                        //TODO - need to refactor this, multiple handlers means multiple deserialization
                        if (handler.QueueName == _handler.QueueName && handler.IsRequestHandled(message))
                        {
                            Console.WriteLine("Passing request to handler: {0}", handler.GetType().Name);
                            handler.HandleRequest(message);
                        }
                    }
                }

                Console.WriteLine("Deleting message");
                var messageRecieptHandle = receiveMessageResponse.ReceiveMessageResult.Message[0].ReceiptHandle;
                var deleteRequest        = new DeleteMessageRequest()
                                           .WithQueueUrl(_handler.QueueUrl)
                                           .WithReceiptHandle(messageRecieptHandle);
                _sqsClient.DeleteMessage(deleteRequest);
            }
        }
        public ErrorTypes RemoveTask(object key)
        {
            ErrorTypes eResult = ErrorTypes.Unknown;

            try
            {
                SQSDataKey oSQSDataKey = (SQSDataKey)key;
                string     strUrlQueue = GetQueueUrl(oSQSDataKey.m_oPriority);

                using (AmazonSQS oSQSClient = AWSClientFactory.CreateAmazonSQSClient())
                {
                    DeleteMessageRequest oDeleteRequest = new DeleteMessageRequest();
                    oDeleteRequest.QueueUrl      = strUrlQueue;
                    oDeleteRequest.ReceiptHandle = (string)oSQSDataKey.m_strReceiptHandle;

                    oSQSClient.DeleteMessage(oDeleteRequest);
                    eResult = ErrorTypes.NoError;
                }
            }
            catch (AmazonSQSException)
            {
            }
            catch
            {
            }

            return(eResult);
        }
Exemple #4
0
        private int ProcessMessage()
        {
            int           numReceived = 0;
            ActivityItems items       = null;

            try {
                ReceiveMessageResponse receiveMessageResponse = sqs.ReceiveMessage(receiveMessageRequest);

                if (receiveMessageResponse.IsSetReceiveMessageResult())
                {
                    ReceiveMessageResult receiveMessageResult = receiveMessageResponse.ReceiveMessageResult;
                    numReceived = receiveMessageResult.Message.Count;

                    foreach (Message message in receiveMessageResult.Message)
                    {
                        items = getActivityItems(message);
                        dispatchItems(items);

                        deleteMessageRequest.WithReceiptHandle(message.ReceiptHandle);
                        sqs.DeleteMessage(deleteMessageRequest);
                    }
                }
            } catch (Exception ex) {
                log.Warn("An unknown error has occurred.  Will retry message.", ex);
            }

            return(numReceived);
        }
        private void Delete(Message message)
        {
            var deleteRequest = new DeleteMessageRequest()
                                .WithReceiptHandle(message.ReceiptHandle)
                                .WithQueueUrl(_config.SqsQueueUrl);

            _client.DeleteMessage(deleteRequest);
        }
Exemple #6
0
        private void Delete_message(string receiptHandle)
        {
            var deleteRequest = new DeleteMessageRequest {
                QueueUrl      = _queueUrl,
                ReceiptHandle = receiptHandle
            };

            _sqs.DeleteMessage(deleteRequest);
        }
Exemple #7
0
        public static string Delete(string queue_url, string msg_id)
        {
            AmazonSQS            sqs      = AWSClientFactory.CreateAmazonSQSClient();
            DeleteMessageRequest d_msgreq = new DeleteMessageRequest();

            d_msgreq.QueueUrl      = queue_url;
            d_msgreq.ReceiptHandle = msg_id;
            DeleteMessageResponse d_msgres = sqs.DeleteMessage(d_msgreq);

            return("Deleted Message \n" + d_msgres.ResponseMetadata.ToString());
        }
        protected override bool Execute(AmazonSQS client)
        {
            Logger.LogMessage(MessageImportance.Normal, "Deleting message {0} from Queue {1}", ReceiptHandle, QueueUrl);

            var request = new DeleteMessageRequest { QueueUrl = QueueUrl, ReceiptHandle = ReceiptHandle };
            client.DeleteMessage(request);

            Logger.LogMessage(MessageImportance.Normal, "Deleted message {0} from queue {1}", ReceiptHandle, QueueUrl);

            return true;
        }
Exemple #9
0
        protected override bool Execute(AmazonSQS client)
        {
            Logger.LogMessage(MessageImportance.Normal, "Deleting message {0} from Queue {1}", ReceiptHandle, QueueUrl);

            var request = new DeleteMessageRequest {
                QueueUrl = QueueUrl, ReceiptHandle = ReceiptHandle
            };

            client.DeleteMessage(request);

            Logger.LogMessage(MessageImportance.Normal, "Deleted message {0} from queue {1}", ReceiptHandle, QueueUrl);

            return(true);
        }
Exemple #10
0
        private void ReceiveMessage()
        {
            var receiveMessageRequest = new ReceiveMessageRequest();

            receiveMessageRequest.QueueUrl = _queueUrl;
            var receiveMessageResponse = _sqsClient.ReceiveMessage(receiveMessageRequest);

            if (receiveMessageResponse.IsSetReceiveMessageResult() && receiveMessageResponse.ReceiveMessageResult.Message.Count > 0)
            {
                Console.WriteLine("Received message at: {0}", DateTime.Now.ToLongTimeString());
                var receiveMessageResult = receiveMessageResponse.ReceiveMessageResult;
                foreach (Message message in receiveMessageResult.Message)
                {
                    Console.WriteLine("Message body: {0}", message.Body);
                }

                var response = receiveMessageResponse.FirstMessageAsResponse <QueryServiceResponse>();
                if (response != null)
                {
                    //fetch the data from the response store:
                    Console.WriteLine("Fetching data at: {0}", DateTime.Now.ToLongTimeString());
                    var responseItems = DataStore.Current.Fetch(response.StoreIdentifier, response.ItemKey);
                    var employees     = new List <Employee>(responseItems.Count());
                    foreach (var responseItem in responseItems)
                    {
                        var employee = Serializer.Current.Deserialize(typeof(Employee), responseItem) as Employee;
                        Console.WriteLine("Adding employee - {0}", employee);
                        employees.Add(employee);
                    }
                }

                Console.WriteLine("Deleting message");
                var messageRecieptHandle = receiveMessageResponse.ReceiveMessageResult.Message[0].ReceiptHandle;
                var deleteRequest        = new DeleteMessageRequest()
                                           .WithQueueUrl(_queueUrl)
                                           .WithReceiptHandle(messageRecieptHandle);
                _sqsClient.DeleteMessage(deleteRequest);
                Console.WriteLine("Completed at: {0}", DateTime.Now.ToLongTimeString());
            }
        }
Exemple #11
0
        private static void ProcessQueue(string jobId, AmazonGlacier client, AWSArchiveRquest request)
        {
            var receiveMessageRequest = new ReceiveMessageRequest()
            {
                QueueUrl = queueUrl, MaxNumberOfMessages = 1
            };
            bool jobDone = false;

            while (!jobDone)
            {
                var receiveMessageResponse = sqsClient.ReceiveMessage(receiveMessageRequest);
                if (receiveMessageResponse.ReceiveMessageResult.Message.Count == 0)
                {
                    Thread.Sleep(1000 * 60);
                    continue;
                }
                Amazon.SQS.Model.Message    message    = receiveMessageResponse.ReceiveMessageResult.Message[0];
                Dictionary <string, string> outerLayer = JsonConvert.DeserializeObject <Dictionary <string, string> >(message.Body);
                Dictionary <string, string> fields     = JsonConvert.DeserializeObject <Dictionary <string, string> >(outerLayer["Message"]);
                string statusCode = fields["StatusCode"] as string;
                if (string.Equals(statusCode, GlacierUtils.JOB_STATUS_SUCCEEDED, StringComparison.InvariantCultureIgnoreCase))
                {
                    Console.WriteLine("Downloading job output");
                    DownloadOutput(jobId, client, request); // This where we save job output to the specified file location.
                }
                else if (string.Equals(statusCode, GlacierUtils.JOB_STATUS_FAILED, StringComparison.InvariantCultureIgnoreCase))
                {
                    Console.WriteLine("Job failed... cannot download the archive.");
                }
                jobDone = true;
                sqsClient.DeleteMessage(new DeleteMessageRequest()
                {
                    QueueUrl = queueUrl, ReceiptHandle = message.ReceiptHandle
                });
            }
        }
        private void ReceiveFromQueue()
        {
            int emptyReceiptCount = 0;

            while (_serviceRunning)
            {
                try
                {
                    var request = new ReceiveMessageRequest
                    {
                        QueueUrl            = _queueUrl,
                        MaxNumberOfMessages = _serviceConfiguration.MaxNumberOfMessagesPerReceive,
                        WaitTimeSeconds     = 20
                    };

                    Trace("Attmepting to receive message from queue '{0}'", _queueUrl);

                    ReceiveMessageResponse response;

                    try
                    {
                        response = _amazonSQS.ReceiveMessage(request);
                    }
                    catch (AmazonSQSException e)
                    {
                        //create the queue if the exception indicates the queue does not exist
                        if (e.Message.ToLowerInvariant().Contains("the specified queue does not exist"))
                        {
                            _createSQSQueueCommand.Invoke(new CreateSQSQueueRequest
                            {
                                QueueName = _queueUrl.GetQueueName()
                            });
                        }

                        emptyReceiptCount = 9;                         //equiv to 3 mins pause, the maximum we wait
                        Thread.Sleep(_requestThrottler.GetDelayMilliseconds(emptyReceiptCount));
                        continue;
                    }

                    if (!response.IsSetReceiveMessageResult() || response.ReceiveMessageResult.Message.Count == 0)
                    {
                        emptyReceiptCount++;
                        Trace("No message returned from queue '{0}', zero message count:={1}", _queueUrl, emptyReceiptCount);

                        //sleep for delay as specified by throttler (unless instructed to poll now)
                        int       delay       = _requestThrottler.GetDelayMilliseconds(emptyReceiptCount);
                        const int sleepPeriod = 100;
                        int       sleepCount  = 0;
                        while (sleepPeriod * ++sleepCount < delay)
                        {
                            if (_pollNow)
                            {
                                emptyReceiptCount = 0;
                                _pollNow          = false;
                                break;
                            }
                            Thread.Sleep(sleepPeriod);
                        }
                        continue;
                    }

                    //reset the zero message count
                    emptyReceiptCount = 0;

                    Trace("Received {0} messages from queue '{1}'", response.ReceiveMessageResult.Message.Count, _queueUrl);

                    foreach (var message in response.ReceiveMessageResult.Message)
                    {
                        var envelope = GetEnvelope(message);

                        Trace("Receiving message for organisation:={0}", envelope.OrganisationId);

                        try
                        {
                            ObjectFactory.GetObject <IMessageProcessor>().Process(_serviceConfiguration, envelope);

                            _amazonSQS.DeleteMessage(new DeleteMessageRequest
                            {
                                QueueUrl      = _queueUrl,
                                ReceiptHandle = envelope.ReceiptHandle
                            });
                        }
                        catch (Exception e)
                        {
                            var de = new ErrorditeDeleteSQSMessageException("Failed to delete message with receipt handle:={0}".FormatWith(envelope.ReceiptHandle), true, e);

                            if (e is ThreadAbortException)
                            {
                                continue;
                            }

                            Error(de);
                            ErrorditeClient.ReportException(de);
                        }
                    }
                }
                catch (Exception e)
                {
                    if (e is ThreadAbortException)
                    {
                        continue;
                    }

                    Error(e);
                    ErrorditeClient.ReportException(e);
                }
            }
        }
Exemple #13
0
        public static void Main(string[] args)
        {
            const string QUEUENAME = "MyQueue";

            AmazonSQS sqs = AWSClientFactory.CreateAmazonSQSClient();

            try
            {
                Console.WriteLine("===========================================");
                Console.WriteLine("Getting Started with Amazon SQS");
                Console.WriteLine("===========================================\n");

                //Creating a queue
                Console.WriteLine("Create a queue called MyQueue.\n");
                CreateQueueRequest sqsRequest = new CreateQueueRequest();
                sqsRequest.QueueName = QUEUENAME;
                CreateQueueResponse createQueueResponse = sqs.CreateQueue(sqsRequest);
                String myQueueUrl;
                myQueueUrl = createQueueResponse.CreateQueueResult.QueueUrl;

                //Confirming the queue exists
                ListQueuesRequest  listQueuesRequest  = new ListQueuesRequest();
                ListQueuesResponse listQueuesResponse = sqs.ListQueues(listQueuesRequest);


                var getQueueReq = new GetQueueUrlRequest();
                getQueueReq.QueueName = "AppZwitschern";
                var getQueueResp = sqs.GetQueueUrl(getQueueReq);
                Console.WriteLine(":: Url={0}", getQueueResp.GetQueueUrlResult.QueueUrl);


                Console.WriteLine("Printing list of Amazon SQS queues.\n");
                if (listQueuesResponse.IsSetListQueuesResult())
                {
                    ListQueuesResult listQueuesResult = listQueuesResponse.ListQueuesResult;
                    foreach (String queueUrl in listQueuesResult.QueueUrl)
                    {
                        Console.WriteLine("  QueueUrl: {0}", queueUrl);
                    }
                }
                Console.WriteLine();

                //Sending a message
                Console.WriteLine("Sending a message to MyQueue.\n");
                SendMessageRequest sendMessageRequest = new SendMessageRequest();
                sendMessageRequest.QueueUrl    = myQueueUrl; //URL from initial queue creation
                sendMessageRequest.MessageBody = "This is my message text.";
                sqs.SendMessage(sendMessageRequest);

                //Receiving a message
                ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest();
                receiveMessageRequest.QueueUrl = myQueueUrl;
                ReceiveMessageResponse receiveMessageResponse = sqs.ReceiveMessage(receiveMessageRequest);
                if (receiveMessageResponse.IsSetReceiveMessageResult())
                {
                    Console.WriteLine("Printing received message.\n");
                    ReceiveMessageResult receiveMessageResult = receiveMessageResponse.ReceiveMessageResult;
                    foreach (Message message in receiveMessageResult.Message)
                    {
                        Console.WriteLine("  Message");
                        if (message.IsSetMessageId())
                        {
                            Console.WriteLine("    MessageId: {0}", message.MessageId);
                        }
                        if (message.IsSetReceiptHandle())
                        {
                            Console.WriteLine("    ReceiptHandle: {0}", message.ReceiptHandle);
                        }
                        if (message.IsSetMD5OfBody())
                        {
                            Console.WriteLine("    MD5OfBody: {0}", message.MD5OfBody);
                        }
                        if (message.IsSetBody())
                        {
                            Console.WriteLine("    Body: {0}", message.Body);
                        }
                        foreach (Amazon.SQS.Model.Attribute attribute in message.Attribute)
                        {
                            Console.WriteLine("  Attribute");
                            if (attribute.IsSetName())
                            {
                                Console.WriteLine("    Name: {0}", attribute.Name);
                            }
                            if (attribute.IsSetValue())
                            {
                                Console.WriteLine("    Value: {0}", attribute.Value);
                            }
                        }
                    }
                }
                String messageRecieptHandle = receiveMessageResponse.ReceiveMessageResult.Message[0].ReceiptHandle;

                //Deleting a message
                Console.WriteLine("Deleting the message.\n");
                DeleteMessageRequest deleteRequest = new DeleteMessageRequest();
                deleteRequest.QueueUrl      = myQueueUrl;
                deleteRequest.ReceiptHandle = messageRecieptHandle;
                sqs.DeleteMessage(deleteRequest);
            }
            catch (AmazonSQSException ex)
            {
                Console.WriteLine("Caught Exception: " + ex.Message);
                Console.WriteLine("Response Status Code: " + ex.StatusCode);
                Console.WriteLine("Error Code: " + ex.ErrorCode);
                Console.WriteLine("Error Type: " + ex.ErrorType);
                Console.WriteLine("Request ID: " + ex.RequestId);
                Console.WriteLine("XML: " + ex.XML);
            }

            Console.WriteLine("Press Enter to continue...");
            Console.Read();
        }
        public AlertMessage GetNextMessage()
        {
            //Receiving a message
            ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest();

            receiveMessageRequest.QueueUrl = queueUrl;
            ReceiveMessageResponse receiveMessageResponse = sqs.ReceiveMessage(receiveMessageRequest);

            if (receiveMessageResponse.IsSetReceiveMessageResult())
            {
                Console.WriteLine("Printing received message.\n");
                ReceiveMessageResult receiveMessageResult = receiveMessageResponse.ReceiveMessageResult;
                foreach (Message message in receiveMessageResult.Message)
                {
                    AlertMessage m = new AlertMessage();
                    Console.WriteLine("  Message");
                    if (message.IsSetMessageId())
                    {
                        Console.WriteLine("    MessageId: {0}", message.MessageId);
                    }
                    if (message.IsSetReceiptHandle())
                    {
                        Console.WriteLine("    ReceiptHandle: {0}", message.ReceiptHandle);
                    }
                    if (message.IsSetMD5OfBody())
                    {
                        Console.WriteLine("    MD5OfBody: {0}", message.MD5OfBody);
                    }
                    if (message.IsSetBody())
                    {
                        m.Body = message.Body;
                        Console.WriteLine("    Body: {0}", message.Body);
                    }
                    foreach (Amazon.SQS.Model.Attribute attribute in message.Attribute)
                    {
                        Console.WriteLine("  Attribute");
                        if (attribute.IsSetName() && attribute.Name == "Subject")
                        {
                            if (attribute.IsSetValue())
                            {
                                m.Subject = attribute.Value;
                            }
                        }
                        if (attribute.IsSetValue())
                        {
                            Console.WriteLine("    Value: {0}", attribute.Value);
                        }
                    }

                    // Deleting a message
                    Console.WriteLine("Deleting the message.\n");
                    DeleteMessageRequest deleteRequest = new DeleteMessageRequest();
                    deleteRequest.QueueUrl      = queueUrl;
                    deleteRequest.ReceiptHandle = message.ReceiptHandle;
                    sqs.DeleteMessage(deleteRequest);

                    return(m);
                }
            }
            return(null);
        }