Example usage for com.amazonaws.services.sqs.model Message getBody

List of usage examples for com.amazonaws.services.sqs.model Message getBody

Introduction

In this page you can find the example usage for com.amazonaws.services.sqs.model Message getBody.

Prototype


public String getBody() 

Source Link

Document

The message's contents (not URL-encoded).

Usage

From source file:com.comcast.cqs.controller.CQSQueueMessagesPageServlet.java

License:Apache License

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    if (redirectUnauthenticatedUser(request, response)) {
        return;/* w  w  w  .j  a  v a 2  s . com*/
    }

    CMBControllerServlet.valueAccumulator.initializeAllCounters();
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    String userId = request.getParameter("userId");
    String queueName = request.getParameter("queueName");
    String msgStr = request.getParameter("message");
    String prevHandle = request.getParameter("prevHandle");
    String nextHandle = request.getParameter("nextHandle");
    String receiptHandle = request.getParameter("receiptHandle");
    Map<?, ?> parameters = request.getParameterMap();
    Message receivedMessage = null;
    int shard = 0;

    if (request.getParameter("shard") != null) {
        shard = Integer.parseInt(request.getParameter("shard"));
    }

    String queueUrl = Util.getAbsoluteQueueUrlForName(queueName, userId);

    connect(request);

    if (parameters.containsKey("Send")) {

        try {

            SendMessageRequest sendMessageRequest = new SendMessageRequest(queueUrl, msgStr);
            sqs.sendMessage(sendMessageRequest);
            logger.debug("event=send_message queue_url= " + queueUrl + " user_id=" + userId);

        } catch (Exception ex) {
            logger.error("event=send_message queue_url= " + queueUrl + " user_id=" + userId, ex);
            throw new ServletException(ex);
        }

    } else if (parameters.containsKey("Delete")) {

        try {

            DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest(queueUrl, receiptHandle);
            sqs.deleteMessage(deleteMessageRequest);
            logger.debug("event=delete_message queue_url= " + queueUrl + " receipt_handle=" + receiptHandle);

        } catch (Exception ex) {
            logger.error("event=delete_message queue_url= " + queueUrl + " receipt_handle=" + receiptHandle,
                    ex);
            throw new ServletException(ex);
        }
    } else if (parameters.containsKey("Receive")) {

        try {

            ReceiveMessageResult result = sqs.receiveMessage(new ReceiveMessageRequest(queueUrl));
            logger.debug("event=receive_message queue_url= " + queueUrl + " user_id=" + userId);
            List<Message> receivedMessages = null;

            if (result != null) {
                receivedMessages = result.getMessages();
                if (receivedMessages != null && receivedMessages.size() > 0) {
                    receivedMessage = receivedMessages.get(0);
                }
            }
        } catch (Exception ex) {
            logger.error("event=receive_message queue_url= " + queueUrl + " user_id=" + userId, ex);
            throw new ServletException(ex);
        }

    }

    int numberOfShards = 1;

    try {

        GetQueueAttributesRequest getQueueAttributesRequest = new GetQueueAttributesRequest(queueUrl);
        getQueueAttributesRequest.setAttributeNames(Arrays.asList("NumberOfShards"));
        GetQueueAttributesResult getQueueAttributesResult = sqs.getQueueAttributes(getQueueAttributesRequest);
        Map<String, String> attributes = getQueueAttributesResult.getAttributes();
        numberOfShards = Integer.parseInt(attributes.get("NumberOfShards"));

    } catch (Exception ex) {
        logger.error("event=get_queue_attributes url=" + queueUrl);
    }

    out.println("<html>");

    out.println("<script type='text/javascript' language='javascript'>");
    out.println("function setVisibility(id, buttonid) {");
    out.println("if(document.getElementById(buttonid).value=='Less'){");
    out.println("document.getElementById(buttonid).value = 'More';");
    out.println("document.getElementById(id).style.display = 'none';");
    out.println("}else{");
    out.println("document.getElementById(buttonid).value = 'Less';");
    out.println("document.getElementById(id).style.display = 'inline';");
    out.println("}");
    out.println("}");
    out.println("</script>");

    header(request, out, "Peek Messages for Queue " + queueName);

    out.println("<body>");
    out.println("<h2>Peek Messages for Queue " + queueName + "</h2>");

    if (user != null) {
        out.println("<table><tr><td><b>User Name:</b></td><td>" + user.getUserName() + "</td></tr>");
        out.println("<tr><td><b>User ID:</b></td><td>" + user.getUserId() + "</td></tr>");
        out.println("<tr><td><b>Access Key:</b></td><td>" + user.getAccessKey() + "</td></tr>");
        out.println("<tr><td><b>Access Secret:</b></td><td>" + user.getAccessSecret() + "</td></tr>");
        out.println("<tr><td><b>Queue Name:</b></td><td>" + queueName + "</td></tr></table>");
    }

    out.println("<p><table><tr><td><b>Send message:</b></td><td></td></tr>");
    out.println("<form id='frm1' action=\"/webui/cqsuser/message/?userId=" + userId + "&queueName=" + queueName
            + "\" method=POST>");
    out.println(
            "<tr><td><textarea rows='3' cols='50' name='message'></textarea><input type='hidden' name='userId' value='"
                    + userId
                    + "'></td><td valign='bottom'><input type='submit' value='Send' name='Send' /></td></tr></form>");
    out.println("<tr><td>&nbsp;</td></tr>");

    if (numberOfShards > 1) {
        out.println("<form id='frm2' action=\"/webui/cqsuser/message/?userId=" + userId + "&queueName="
                + queueName + "\" method=POST>");
        out.println(
                "<tr><td>Shard: <select name='shard' onChange='document.getElementById(\"frm2\").submit();'>");
        for (int i = 0; i < numberOfShards; i++) {
            out.print("<option value='" + i + "'");
            if (shard == i) {
                out.print(" selected");
            }
            out.println(">" + i + "</option>");
        }
        out.println("</form></select></td></tr></table></p>");
    } else {
        out.println("</table></p>");
    }

    // for receive message

    out.println("<form id='formsendmessage' action=\"/webui/cqsuser/message/?userId=" + userId + "&queueName="
            + queueName + "\" method=POST>");
    out.println("<table><tr><td><b>Receive Message:</b></td>");
    out.println("<td><input type='hidden' name='userId' value='" + userId
            + "'></td><td valign='bottom'><input type='submit' value='Receive Message' name='Receive' /></td>");
    out.println("</form></tr></table>");

    // showing received message

    out.println("<p><hr width='100%' align='left' /><p>");
    out.println("<h3>Received Messages</h3>");

    if (receivedMessage != null) {

        Map<String, String> attributes = receivedMessage.getAttributes();

        String timeSent = "";

        if (attributes.get("SentTimestamp") != null) {
            try {
                timeSent = new Date(Long.parseLong(attributes.get("SentTimestamp"))).toString();
            } catch (Exception ex) {
            }
        }

        String timeReceived = "";

        if (attributes.get("ApproximateFirstReceiveTimestamp") != null) {
            try {
                timeReceived = new Date(Long.parseLong(attributes.get("ApproximateFirstReceiveTimestamp")))
                        .toString();
            } catch (Exception ex) {
            }
        }

        out.println("<table class = 'alternatecolortable'>");
        out.println(
                "<tr><th></th><th>Receipt Handle</th><th>MD5</th><th>Body</th><th>Time Sent</th><th>Time First Received (Appr.)</th><th>Receive Count (Appr.)</th><th>Sender</th><th>&nbsp;</th></tr>");

        out.println("<tr>");
        out.println("<td>0</td>");
        out.println("<td>" + receivedMessage.getReceiptHandle() + "</td>");
        out.println("<td>" + receivedMessage.getMD5OfBody() + "</td>");
        String messageBody = receivedMessage.getBody();
        String messageBodyPart1 = null;
        String messageBodyPart2 = null;

        if ((messageBody != null) && (messageBody.length() > 300)) {

            messageBodyPart1 = messageBody.substring(0, 299);
            messageBodyPart2 = messageBody.substring(299);

            out.println("<td>");
            out.println(messageBodyPart1);
            out.println("<div id='rdetail' style=\"display: none;\">" + messageBodyPart2 + "</div>");
            out.println(
                    "<input type=button name=type id='rbt' value='More' onclick=\"setVisibility('rdetail', 'rbt');\";> ");
            out.println("</td>");
        } else {
            out.println("<td>" + receivedMessage.getBody() + "</td>");
        }

        out.println("<td>" + timeSent + "</td>");
        out.println("<td>" + timeReceived + "</td>");
        out.println("<td>" + attributes.get("ApproximateReceiveCount") + "</td>");
        out.println("<td>" + attributes.get("SenderId") + "</td>");
        out.println("<td><form action=\"/webui/cqsuser/message/?userId=" + user.getUserId() + "&queueName="
                + queueName + "&receiptHandle=" + receivedMessage.getReceiptHandle()
                + "\" method=POST><input type='submit' value='Delete' name='Delete'/><input type='hidden' name='queueUrl' value='"
                + queueUrl + "' /></form></td></tr>");
        out.println("</table>");

    } else {
        out.println("<p><i>no messages</i></p>");
    }

    List<CQSMessage> availableMessages = null;
    String queueFirstMessageHandle = null;

    try {

        if (queueUrl != null) {

            String peekRequestUrl = cqsServiceBaseUrl + user.getUserId() + "/" + queueName
                    + "?Action=PeekMessage&AWSAccessKeyId=" + user.getAccessKey()
                    + "&MaxNumberOfMessages=10&Shard=" + shard;

            if (prevHandle != null) {
                peekRequestUrl += "&PreviousReceiptHandle=" + prevHandle;
            } else if (nextHandle != null) {
                peekRequestUrl += "&NextReceiptHandle=" + nextHandle;
            }

            AWSCredentials awsCredentials = new BasicAWSCredentials(user.getAccessKey(),
                    user.getAccessSecret());
            String peekXml = httpPOST(cqsServiceBaseUrl, peekRequestUrl, awsCredentials);
            Element root = XmlUtil.buildDoc(peekXml);

            List<Element> messageElements = XmlUtil.getCurrentLevelChildNodes(
                    XmlUtil.getCurrentLevelChildNodes(root, "ReceiveMessageResult").get(0), "Message");

            for (Element messageElement : messageElements) {

                if (availableMessages == null) {
                    availableMessages = new ArrayList<CQSMessage>();
                }

                String body = XmlUtil.getCurrentLevelTextValue(messageElement, "Body");
                String id = XmlUtil.getCurrentLevelTextValue(messageElement, "MessageId").trim();
                String handle = XmlUtil.getCurrentLevelTextValue(messageElement, "ReceiptHandle").trim();

                CQSMessage msg = new CQSMessage(id, body);
                msg.setReceiptHandle(handle);

                List<Element> attributeElements = XmlUtil.getCurrentLevelChildNodes(messageElement,
                        "Attribute");
                Map<String, String> attributes = new HashMap<String, String>();

                for (Element attribute : attributeElements) {

                    String name = XmlUtil.getCurrentLevelTextValue(attribute, "Name");
                    String value = XmlUtil.getCurrentLevelTextValue(attribute, "Value");

                    if (name != null && value != null) {
                        attributes.put(name, value);
                    }
                }

                msg.setAttributes(attributes);

                availableMessages.add(msg);
            }

            //retrieve first messageId from queue. this is for pagination
            String peekRequestFirstMessageUrl = cqsServiceBaseUrl + user.getUserId() + "/" + queueName
                    + "?Action=PeekMessage&AWSAccessKeyId=" + user.getAccessKey()
                    + "&MaxNumberOfMessages=1&Shard=" + shard;
            String peekFirstMessageXml = httpPOST(cqsServiceBaseUrl, peekRequestFirstMessageUrl,
                    awsCredentials);
            Element rootFirstMessage = XmlUtil.buildDoc(peekFirstMessageXml);

            List<Element> messageElementsForFirstMessage = XmlUtil.getCurrentLevelChildNodes(
                    XmlUtil.getCurrentLevelChildNodes(rootFirstMessage, "ReceiveMessageResult").get(0),
                    "Message");
            if (messageElementsForFirstMessage.size() == 1) {
                queueFirstMessageHandle = XmlUtil
                        .getCurrentLevelTextValue(messageElementsForFirstMessage.get(0), "ReceiptHandle")
                        .trim();
            }
        }

    } catch (Exception ex) {
        logger.error("event=peek_message queue_url=" + queueUrl, ex);
        throw new ServletException(ex);
    }

    String previousHandle = null;
    nextHandle = null;

    out.println("<p><hr width='100%' align='left' /><p>");
    out.println("<h3>Available Messages</h3>");

    if ((availableMessages == null) || (availableMessages.size() == 0)) {
        out.println("<p><i>no messages</i></p>");
    }

    for (int i = 0; availableMessages != null && i < availableMessages.size(); i++) {

        CQSMessage message = availableMessages.get(i);

        Map<String, String> attributes = message.getAttributes();

        String timeSent = "";

        if (attributes.get("SentTimestamp") != null) {
            try {
                timeSent = new Date(Long.parseLong(attributes.get("SentTimestamp"))).toString();
            } catch (Exception ex) {
            }
        }

        String timeReceived = "";

        if (attributes.get("ApproximateFirstReceiveTimestamp") != null) {
            try {
                timeReceived = new Date(Long.parseLong(attributes.get("ApproximateFirstReceiveTimestamp")))
                        .toString();
            } catch (Exception ex) {
            }
        }

        if (i == 0) {
            out.println("<table class = 'alternatecolortable'>");
            out.println(
                    "<tr><th></th><th>Receipt Handle</th><th>MD5</th><th>Body</th><th>Time Sent</th><th>Time First Received (Appr.)</th><th>Receive Count (Appr.)</th><th>Sender</th><th>&nbsp;</th></tr>");
            previousHandle = message.getReceiptHandle();
        }

        out.println("<tr>");
        out.println("<td>" + i + "</td>");
        out.println("<td>" + message.getReceiptHandle() + "</td>");
        out.println("<td>" + message.getMD5OfBody() + "</td>");
        String messageBody = message.getBody();
        String messageBodyPart1 = null;
        String messageBodyPart2 = null;
        if ((messageBody != null) && (messageBody.length() > 300)) {
            messageBodyPart1 = messageBody.substring(0, 299);
            messageBodyPart2 = messageBody.substring(299);

            out.println("<td>");
            out.println(messageBodyPart1);
            out.println("<div id='detail" + i + "' style=\"display: none;\">" + messageBodyPart2 + "</div>");
            out.println("<input type=button name=type id='bt" + i
                    + "' value='More' onclick=\"setVisibility('detail" + i + "', 'bt" + i + "');\";> ");
            out.println("</td>");
        } else {
            out.println("<td>" + message.getBody() + "</td>");
        }
        out.println("<td>" + timeSent + "</td>");
        out.println("<td>" + timeReceived + "</td>");
        out.println("<td>" + attributes.get("ApproximateReceiveCount") + "</td>");
        out.println("<td>" + attributes.get("SenderId") + "</td>");
        out.println("<td></td></tr>");

        if (i == availableMessages.size() - 1) {
            nextHandle = message.getReceiptHandle();
        }
    }

    out.println("</table>");

    //This case is for click on "Next" button of the previous page
    if (prevHandle != null) {

        if ((previousHandle) != null) {
            out.println("<a style='float:left;' href='/webui/cqsuser/message/?userId=" + user.getUserId()
                    + "&queueName=" + queueName + "&nextHandle=" + previousHandle + "'>Prev</a>");
        } else {
            out.println("<a style='float:left;' href='javascript:history.back()'>Prev</a>");
        }
    } else if ((previousHandle != null) && (!previousHandle.equals(queueFirstMessageHandle))) { //this is for all other cases
        out.println("<a style='float:left;' href='/webui/cqsuser/message/?userId=" + user.getUserId()
                + "&queueName=" + queueName + "&nextHandle=" + previousHandle + "'>Prev</a>");
    }

    if (availableMessages != null && availableMessages.size() > 0) {
        out.println("<a style='float:right;' href='/webui/cqsuser/message/?userId=" + user.getUserId()
                + "&queueName=" + queueName + "&prevHandle=" + nextHandle + "'>Next</a>");
    }

    out.println("<h5 style='text-align:center;'><a href='/webui'>ADMIN HOME</a>");
    out.println("<a href='/webui/cqsuser?userId=" + userId + "'>BACK TO QUEUE</a></h5>");

    out.println("</body></html>");

    CMBControllerServlet.valueAccumulator.deleteAllCounters();
}

From source file:com.comcast.cqs.model.CQSMessage.java

License:Apache License

public CQSMessage(Message message) {

    this.messageId = message.getMessageId();
    this.receiptHandle = message.getReceiptHandle();
    this.body = message.getBody();
    this.mD5OfBody = message.getMD5OfBody();
}

From source file:com.dateofrock.aws.simplesqs.JobConsumer.java

License:Apache License

public void consume(Class<? extends AbstractJobTicket> clazz) {
    String queueName = this.reflector.findQueueName(clazz);
    GetQueueUrlResult result = this.sqs.getQueueUrl(new GetQueueUrlRequest(queueName));
    String queueUrl = result.getQueueUrl();

    ReceiveMessageResult receivedMessage = this.sqs.receiveMessage(
            new ReceiveMessageRequest(queueUrl).withMaxNumberOfMessages(this.maxNumberOfMessages));
    List<Message> messages = receivedMessage.getMessages();
    for (Message message : messages) {
        String jobId = message.getBody();
        String receiptHandle = message.getReceiptHandle();

        AbstractJobTicket jobTicket = null;
        try {//from  www  .  jav a 2s  .  c  om
            jobTicket = this.sdbMapper.load(clazz, jobId);
            jobTicket.receiptHandle = receiptHandle;

        } catch (SimpleDBMapperNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            // FIXME Message??
            this.sqs.deleteMessage(new DeleteMessageRequest(queueUrl, receiptHandle));
            return;
        }

        Status currentStatus = Status.fromJobTicket(jobTicket);
        switch (currentStatus) {
        case WAITING:
            jobTicket.status = Status.IN_PROGRESS.getValue();
            jobTicket.updatedAt = new Date();
            this.sdbMapper.save(jobTicket);

            try {
                // 
                jobTicket.execute();
            } catch (Exception e) {
                // StackTrace?
                StringWriter writer = new StringWriter();
                PrintWriter printWriter = new PrintWriter(writer);
                e.printStackTrace(printWriter);
                printWriter.flush();
                printWriter.close();
                try {
                    writer.close();
                } catch (IOException ignore) {
                }
                jobTicket.exceptionStackTrace = writer.toString();
                jobTicket.status = Status.FAILURE.getValue();
                jobTicket.updatedAt = new Date();
                this.sdbMapper.save(jobTicket);
                break;
            }

            jobTicket.status = Status.SUCCESS.getValue();
            jobTicket.updatedAt = new Date();
            this.sdbMapper.save(jobTicket);
            break;
        case IN_PROGRESS:
            jobTicket.processIfInProgress();
            break;
        case SUCCESS:

            break;
        case FAILURE:

            break;
        default:
            break;
        }

    }
}

From source file:com.dxc.temp.SimpleQueueServiceSample.java

License:Open Source License

public static void main(String[] args) throws Exception {

    BasicConfigurator.configure();/*  w  ww  .j a v a 2  s .c  o m*/

    /*
     * The ProfileCredentialsProvider will return your [default]
     * credential profile by reading from the credentials file located at
     * (~/.aws/credentials).
     */
    AWSCredentials credentials = null;
    try {
        credentials = new ProfileCredentialsProvider().getCredentials();
    } catch (Exception e) {
        throw new AmazonClientException("Cannot load the credentials from the credential profiles file. "
                + "Please make sure that your credentials file is at the correct "
                + "location (~/.aws/credentials), and is in valid format.", e);
    }
    System.out.println(String.format("Found AWSAccessKeyId: %s", credentials.getAWSAccessKeyId()));
    System.out.println(String.format("Found AWSAccessSecretKey: %s", credentials.getAWSSecretKey()));

    AmazonSQS sqs = new AmazonSQSClient(credentials);
    Region usEast1 = Region.getRegion(Regions.US_EAST_1);
    sqs.setRegion(usEast1);

    System.out.println("===========================================");
    System.out.println("Getting Started with Amazon SQS");
    System.out.println("===========================================\n");

    try {
        // Create a queue
        System.out.println("Creating a new SQS queue called MyQueue.\n");
        CreateQueueRequest createQueueRequest = new CreateQueueRequest("MyQueue");
        String myQueueUrl = sqs.createQueue(createQueueRequest).getQueueUrl();

        // List queues
        System.out.println("Listing all queues in your account.\n");
        for (String queueUrl : sqs.listQueues().getQueueUrls()) {
            System.out.println("  QueueUrl: " + queueUrl);
        }
        System.out.println();

        // Send a message
        System.out.println("Sending a message to MyQueue.\n");
        sqs.sendMessage(new SendMessageRequest(myQueueUrl, "Message body text"));

        // Receive messages
        System.out.println("Receiving messages from MyQueue.\n");
        ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(myQueueUrl);
        List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();
        for (Message message : messages) {
            System.out.println("  Message");
            System.out.println("    MessageId:     " + message.getMessageId());
            System.out.println("    ReceiptHandle: " + message.getReceiptHandle());
            System.out.println("    MD5OfBody:     " + message.getMD5OfBody());
            System.out.println("    Body:          " + message.getBody());
            for (Entry<String, String> entry : message.getAttributes().entrySet()) {
                System.out.println("  Attribute");
                System.out.println("    Name:  " + entry.getKey());
                System.out.println("    Value: " + entry.getValue());
            }
        }
        System.out.println();

        // Delete a message
        //            System.out.println("Deleting a message.\n");
        //            String messageReceiptHandle = messages.get(0).getReceiptHandle();
        //            sqs.deleteMessage(new DeleteMessageRequest(myQueueUrl, messageReceiptHandle));

        // Delete a queue
        // You must wait 60 seconds after deleting a queue before you can create another with the same name
        //            System.out.println("Deleting the test queue.\n");
        //            sqs.deleteQueue(new DeleteQueueRequest(myQueueUrl));
    } catch (AmazonServiceException ase) {
        System.out.println("Caught an AmazonServiceException, which means your request made it "
                + "to Amazon SQS, but was rejected with an error response for some reason.");
        System.out.println("Error Message:    " + ase.getMessage());
        System.out.println("HTTP Status Code: " + ase.getStatusCode());
        System.out.println("AWS Error Code:   " + ase.getErrorCode());
        System.out.println("Error Type:       " + ase.getErrorType());
        System.out.println("Request ID:       " + ase.getRequestId());
    } catch (AmazonClientException ace) {
        System.out.println("Caught an AmazonClientException, which means the client encountered "
                + "a serious internal problem while trying to communicate with SQS, such as not "
                + "being able to access the network.");
        System.out.println("Error Message: " + ace.getMessage());
    }
}

From source file:com.easarrive.aws.plugins.common.service.impl.SQSNotificationService.java

License:Open Source License

/**
 * {@inheritDoc}/*  w  w  w. ja  va  2  s  .co  m*/
 */
@Override
public boolean isSignatureMessageValid(Message message) {
    if (message == null) {
        return false;
    }
    String md5MessageBody = message.getMD5OfBody();
    if (StringUtil.isEmpty(md5MessageBody)) {
        return false;
    }
    String messageBody = message.getBody();
    try {
        return md5MessageBody.equals(DigestUtils.md5Hex(messageBody));
    } catch (Exception e) {
        return false;
    }
}

From source file:com.easarrive.image.thumbor.executer.service.impl.SQSNotificationHandlerForThumbor.java

License:Open Source License

@Override
public List<NotificationHandleResult<Message, Boolean>> handle(Message message) throws AWSPluginException {
    String messageId = null;/* w w  w  .j  ava 2 s .  co m*/
    try {
        if (message == null) {
            throw new AWSPluginException("The message is null");
        }
        messageId = message.getMessageId();

        S3EventMessageContent messageContent = this.getMessageContent(message.getBody());
        if (messageContent == null) {
            throw new AWSPluginException("The S3EventMessageContent is null");
        }

        //???
        return this.ergodicS3EventMessageRecord(message, messageContent);
    } catch (Exception e) {
        String errorMessage = String.format("Handle exception {%s} for messge (ID : %s)", e.getMessage(),
                messageId);
        throw new AWSPluginException(errorMessage, e);
    }
}

From source file:com.erudika.para.queue.AWSQueueUtils.java

License:Apache License

/**
 * Pulls a number of messages from an SQS queue.
 * @param queueURL the URL of the SQS queue
 * @param numberOfMessages the number of messages to pull
 * @return a list of messages//w w  w  .  j a v  a2 s.c om
 */
public static List<String> pullMessages(String queueURL, int numberOfMessages) {
    List<String> messages = new ArrayList<String>();
    if (!StringUtils.isBlank(queueURL)) {
        try {
            int batchSteps = 1;
            int maxForBatch = numberOfMessages;
            if ((numberOfMessages > MAX_MESSAGES)) {
                batchSteps = (numberOfMessages / MAX_MESSAGES)
                        + ((numberOfMessages % MAX_MESSAGES > 0) ? 1 : 0);
                maxForBatch = MAX_MESSAGES;
            }

            for (int i = 0; i < batchSteps; i++) {
                List<Message> list = getClient().receiveMessage(new ReceiveMessageRequest(queueURL)
                        .withMaxNumberOfMessages(maxForBatch).withWaitTimeSeconds(POLLING_INTERVAL))
                        .getMessages();
                if (list != null && !list.isEmpty()) {
                    List<DeleteMessageBatchRequestEntry> del = new ArrayList<DeleteMessageBatchRequestEntry>();
                    for (Message msg : list) {
                        messages.add(msg.getBody());
                        del.add(new DeleteMessageBatchRequestEntry(msg.getMessageId(), msg.getReceiptHandle()));
                    }
                    getClient().deleteMessageBatch(queueURL, del);
                }
            }
        } catch (AmazonServiceException ase) {
            logException(ase);
        } catch (AmazonClientException ace) {
            logger.error("Could not reach SQS. {}", ace.toString());
        }
    }
    return messages;
}

From source file:com.espressologic.aws.sqs.SqsAmazonService.java

License:Open Source License

public static String readMessage(String messageID) {
    // Receive messages
    AmazonSQS sqs = createAWSCredentials();
    System.out.println("Receiving messages from " + myQueueUrl + ".\n");
    ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(myQueueUrl);
    List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();
    StringBuffer sb = new StringBuffer();
    sb.append("[");
    String sep = "";
    String receipt = null;//from   www.  j av a  2  s  . co m
    for (Message message : messages) {
        if (message.getMessageId().equals(messageID)) {
            displayMessageContent(message);
            sb.append(sep);
            sb.append("\"message\" :");
            sb.append(message.getBody());
            if ("".equals(sep))
                sep = ",";
            receipt = message.getReceiptHandle();
            deleteMessages(receipt);
        }
    }
    sb.append("]");
    System.out.println();
    return sb.toString();
}

From source file:com.espressologic.aws.sqs.SqsAmazonService.java

License:Open Source License

private static void displayMessageContent(Message message) {
    System.out.println("  Message");
    System.out.println("    MessageId:     " + message.getMessageId());
    System.out.println("    ReceiptHandle: " + message.getReceiptHandle());
    System.out.println("    MD5OfBody:     " + message.getMD5OfBody());
    System.out.println("    Body:          " + message.getBody());
    for (Entry<String, String> entry : message.getAttributes().entrySet()) {
        System.out.println("  Attribute");
        System.out.println("    Name:  " + entry.getKey());
        System.out.println("    Value: " + entry.getValue());
    }// w w  w  .j  a va2s . com
}

From source file:com.github.gregwhitaker.sns.Consumer.java

License:Apache License

@Override
public void run() {
    String queueName = queueArn.substring(queueArn.lastIndexOf(":") + 1);
    String queueUrl = sqsClient.getQueueUrl(queueName).getQueueUrl();

    while (true) {
        ReceiveMessageResult result = sqsClient.receiveMessage(queueUrl);

        List<Message> messages = result.getMessages();

        if (messages != null && !messages.isEmpty()) {
            for (Message message : messages) {
                try {
                    SnsMessage parsedMessage = mapper.readerFor(SnsMessage.class).readValue(message.getBody());
                    System.out.println(name + ": " + parsedMessage.getMessage());
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    // Acknowledge the message so that it will not be redelivered
                    sqsClient.deleteMessage(queueUrl, message.getReceiptHandle());
                }/* w w w .ja va2s . c  om*/
            }
        } else {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}