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:it.polimi.modaclouds.cpimlibrary.msgqueuemng.AmazonMessageQueue.java

License:Apache License

@Override
public CloudMessage getMessage() {
    String msg = null;//from   ww w . j  a va 2s  . c  om
    String id = null;
    String queueUrl = sqs.getQueueUrl(new GetQueueUrlRequest(queueName)).getQueueUrl();
    ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl);
    List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();
    for (Message m : messages) {
        msg = m.getBody();
        id = m.getMessageId();
        receipts.put(id, m.getReceiptHandle());
        break;
    }
    CloudMessage cm = new CloudMessage(msg);
    cm.setId(id);
    return cm;
}

From source file:it.polimi.modaclouds.cpimlibrary.taskqueuemng.AmazonTaskQueue.java

License:Apache License

public AmazonTaskQueueMessage getMessage() {
    String text = null;/*from  w  ww. ja va2  s. co  m*/
    String id = null;
    String pop = null;
    String queueUrl = sqs.getQueueUrl(new GetQueueUrlRequest(queueName)).getQueueUrl();
    ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl);
    List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();
    if (messages.size() == 0)
        return null;
    for (Message m : messages) {
        text = m.getBody();
        id = m.getMessageId();
        pop = m.getReceiptHandle();
        receipts.put(id, pop);
        break;
    }
    return new AmazonTaskQueueMessage(id, text, pop);
}

From source file:org.apache.nifi.processors.aws.sqs.GetSQS.java

License:Apache License

@Override
public void onTrigger(final ProcessContext context, final ProcessSession session) {
    final String queueUrl = context.getProperty(DYNAMIC_QUEUE_URL).evaluateAttributeExpressions().getValue();

    final AmazonSQSClient client = getClient();

    final ReceiveMessageRequest request = new ReceiveMessageRequest();
    request.setAttributeNames(Collections.singleton("All"));
    request.setMessageAttributeNames(Collections.singleton("All"));
    request.setMaxNumberOfMessages(context.getProperty(BATCH_SIZE).asInteger());
    request.setVisibilityTimeout(//from   ww w .ja  v a2 s.  c  om
            context.getProperty(VISIBILITY_TIMEOUT).asTimePeriod(TimeUnit.SECONDS).intValue());
    request.setQueueUrl(queueUrl);
    request.setWaitTimeSeconds(
            context.getProperty(RECEIVE_MSG_WAIT_TIME).asTimePeriod(TimeUnit.SECONDS).intValue());

    final Charset charset = Charset.forName(context.getProperty(CHARSET).getValue());

    final ReceiveMessageResult result;
    try {
        result = client.receiveMessage(request);
    } catch (final Exception e) {
        getLogger().error("Failed to receive messages from Amazon SQS due to {}", new Object[] { e });
        context.yield();
        return;
    }

    final List<Message> messages = result.getMessages();
    if (messages.isEmpty()) {
        context.yield();
        return;
    }

    final boolean autoDelete = context.getProperty(AUTO_DELETE).asBoolean();

    for (final Message message : messages) {
        FlowFile flowFile = session.create();

        final Map<String, String> attributes = new HashMap<>();
        for (final Map.Entry<String, String> entry : message.getAttributes().entrySet()) {
            attributes.put("sqs." + entry.getKey(), entry.getValue());
        }

        for (final Map.Entry<String, MessageAttributeValue> entry : message.getMessageAttributes().entrySet()) {
            attributes.put("sqs." + entry.getKey(), entry.getValue().getStringValue());
        }

        attributes.put("hash.value", message.getMD5OfBody());
        attributes.put("hash.algorithm", "md5");
        attributes.put("sqs.message.id", message.getMessageId());
        attributes.put("sqs.receipt.handle", message.getReceiptHandle());

        flowFile = session.putAllAttributes(flowFile, attributes);
        flowFile = session.write(flowFile, new OutputStreamCallback() {
            @Override
            public void process(final OutputStream out) throws IOException {
                out.write(message.getBody().getBytes(charset));
            }
        });

        session.transfer(flowFile, REL_SUCCESS);
        session.getProvenanceReporter().receive(flowFile, queueUrl);

        getLogger().info("Successfully received {} from Amazon SQS", new Object[] { flowFile });
    }

    if (autoDelete) {
        // If we want to auto-delete messages, we must fist commit the session to ensure that the data
        // is persisted in NiFi's repositories.
        session.commit();

        final DeleteMessageBatchRequest deleteRequest = new DeleteMessageBatchRequest();
        deleteRequest.setQueueUrl(queueUrl);
        final List<DeleteMessageBatchRequestEntry> deleteRequestEntries = new ArrayList<>();
        for (final Message message : messages) {
            final DeleteMessageBatchRequestEntry entry = new DeleteMessageBatchRequestEntry();
            entry.setId(message.getMessageId());
            entry.setReceiptHandle(message.getReceiptHandle());
            deleteRequestEntries.add(entry);
        }

        deleteRequest.setEntries(deleteRequestEntries);

        try {
            client.deleteMessageBatch(deleteRequest);
        } catch (final Exception e) {
            getLogger().error(
                    "Received {} messages from Amazon SQS but failed to delete the messages; these messages"
                            + " may be duplicated. Reason for deletion failure: {}",
                    new Object[] { messages.size(), e });
        }
    }

}

From source file:org.apache.usergrid.apm.service.MetricsInjestionServiceSQSImpl.java

License:Apache License

protected DataToPersist marshallReceiveMessageResults2(List<ReceiveMessageResult> receiveMessageResults,
        Long applicationId, String fullAppName) {
    DataToPersist toPersist = new DataToPersist();

    toPersist.metricsBeans = new ArrayList<ClientNetworkMetrics>();
    toPersist.clientLogs = new ArrayList<ClientLog>();
    toPersist.envelopes = new ArrayList<ClientMetricsEnvelope>();
    toPersist.clientSessionMetrics = new ArrayList<ClientSessionMetrics>();

    for (ReceiveMessageResult receiveMessageResult : receiveMessageResults) {
        for (Message message : receiveMessageResult.getMessages()) {
            String messageBody = message.getBody();
            Map<String, String> attributes = message.getAttributes();

            long sentTimestamp = 0;

            if (attributes.containsKey("SentTimestamp")) {
                sentTimestamp = Long.parseLong(attributes.get("SentTimestamp"));
            }//w w w  .java2  s . c  o  m

            DataToPersist dataSubset = marshallJSONPayloadFromSQS(messageBody, sentTimestamp, applicationId,
                    fullAppName);
            if (dataSubset != null) {
                toPersist.metricsBeans.addAll(dataSubset.metricsBeans);
                toPersist.clientLogs.addAll(dataSubset.clientLogs);
                toPersist.envelopes.addAll(dataSubset.envelopes);
                toPersist.clientSessionMetrics.addAll(dataSubset.clientSessionMetrics);
            }
        }

    }

    return toPersist;
}

From source file:org.apache.usergrid.persistence.queue.impl.SNSQueueManagerImpl.java

License:Apache License

@Override
public List<LegacyQueueMessage> getMessages(final int limit, final Class klass) {

    if (sqs == null) {
        logger.error("SQS is null - was not initialized properly");
        return new ArrayList<>(0);
    }//  ww  w.j a  v a  2s  . c o  m

    String url = getReadQueue().getUrl();

    if (logger.isTraceEnabled()) {
        logger.trace("Getting up to {} messages from {}", limit, url);
    }

    ArrayList<String> requestMessageAttributeNames = new ArrayList<String>(1);
    requestMessageAttributeNames.add("ApproximateReceiveCount");

    ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(url);
    receiveMessageRequest.setAttributeNames(requestMessageAttributeNames);
    receiveMessageRequest.setMaxNumberOfMessages(limit);
    receiveMessageRequest
            .setVisibilityTimeout(Math.max(MIN_VISIBILITY_TIMEOUT, fig.getVisibilityTimeout() / 1000));

    int longPollTimeout = Math.min(20000, fig.getQueuePollTimeout()); // 20000 is the SQS maximum

    // ensure the client's socket timeout is not less than the configure long poll timeout
    if (fig.getQueueClientSocketTimeout() < longPollTimeout) {

        longPollTimeout = Math.max(0, fig.getQueueClientSocketTimeout() - 1000);

    }

    receiveMessageRequest.setWaitTimeSeconds(longPollTimeout / 1000); // convert to seconds

    try {
        ReceiveMessageResult result = sqs.receiveMessage(receiveMessageRequest);
        List<Message> messages = result.getMessages();

        if (logger.isTraceEnabled()) {
            logger.trace("Received {} messages from {}", messages.size(), url);
        }

        List<LegacyQueueMessage> queueMessages = new ArrayList<>(messages.size());

        for (Message message : messages) {

            Object payload;
            final String originalBody = message.getBody();

            try {
                final JsonNode bodyNode = mapper.readTree(message.getBody());

                /**
                 * When a message originates from SNS it has a "Message"  we have to extract
                 * it and then process it separately
                 */

                if (bodyNode.has("Message")) {
                    final String snsNode = bodyNode.get("Message").asText();

                    payload = deSerializeSQSMessage(snsNode, klass);
                } else {
                    payload = deSerializeSQSMessage(originalBody, klass);
                }
            } catch (Exception e) {
                logger.error("failed to deserialize message: {}", message.getBody(), e);
                throw new RuntimeException(e);
            }

            LegacyQueueMessage queueMessage = new LegacyQueueMessage(message.getMessageId(),
                    message.getReceiptHandle(), payload, message.getAttributes().get("type"));
            queueMessage.setStringBody(originalBody);
            int receiveCount = Integer.valueOf(message.getAttributes().get("ApproximateReceiveCount"));
            queueMessage.setReceiveCount(receiveCount);
            queueMessages.add(queueMessage);
        }

        return queueMessages;
    } catch (com.amazonaws.services.sqs.model.QueueDoesNotExistException dne) {
        logger.error("Queue does not exist! [{}]", url, dne);
    } catch (Exception e) {
        logger.error("Programming error getting messages from queue=[{}] exist!", url, e);
    }

    return new ArrayList<>(0);
}

From source file:org.duracloud.common.queue.aws.SQSTaskQueue.java

License:Apache License

protected Task marshallTask(Message msg) {
    Properties props = new Properties();
    Task task = null;//from   w  w w  . j  a v a 2  s  .c o m
    try {
        props.load(new StringReader(msg.getBody()));

        if (props.containsKey(Task.KEY_TYPE)) {
            task = new Task();
            for (final String key : props.stringPropertyNames()) {
                if (key.equals(Task.KEY_TYPE)) {
                    task.setType(Task.Type.valueOf(props.getProperty(key)));
                } else {
                    task.addProperty(key, props.getProperty(key));
                }
            }
            task.addProperty(MsgProp.MSG_ID.name(), msg.getMessageId());
            task.addProperty(MsgProp.RECEIPT_HANDLE.name(), msg.getReceiptHandle());
        } else {
            log.error("SQS message from queue: " + queueName + ", queueUrl: " + queueUrl
                    + " does not contain a 'task type'");
        }
    } catch (IOException ioe) {
        log.error("Error creating Task", ioe);
    }
    return task;
}

From source file:org.duracloud.common.sns.config.SnsSubscriptionManagerConfig.java

License:Apache License

@Bean(destroyMethod = "disconnect", initMethod = "connect")
public SnsSubscriptionManager snsSubscriptionManager(GlobalPropertiesRepo globalPropertiesRepo,
        final List<AccountComponentCache<?>> componentCaches, String appName) {
    try {/* ww  w .j a  v a  2s.  co m*/

        GlobalProperties props = globalPropertiesRepo.findAll().get(0);
        String queueName = "node-queue-" + appName + "-"
                + Inet4Address.getLocalHost().getHostName().replace(".", "_");
        SnsSubscriptionManager subscriptionManager = new SnsSubscriptionManager(
                AmazonSQSClientBuilder.defaultClient(), AmazonSNSClientBuilder.defaultClient(),
                props.getInstanceNotificationTopicArn(), queueName);

        subscriptionManager.addListener(new MessageListener() {
            @Override
            public void onMessage(Message message) {
                log.info("message received: " + message);
                log.debug("message body: " + message.getBody());
                JsonFactory factory = new JsonFactory();
                ObjectMapper mapper = new ObjectMapper(factory);
                TypeReference<HashMap<String, String>> typeRef = new TypeReference<HashMap<String, String>>() {
                };
                String body = message.getBody();
                try {
                    Map<String, String> map = mapper.readValue(body, typeRef);
                    AccountChangeEvent event = AccountChangeEvent.deserialize(map.get("Message"));
                    for (AccountComponentCache<?> cache : componentCaches) {
                        cache.onEvent(event);
                    }
                } catch (IOException e) {
                    log.warn("unable to dispatch message: " + message + " : " + e.getMessage(), e);
                }
            }
        });

        return subscriptionManager;
    } catch (UnknownHostException e) {
        throw new DuraCloudRuntimeException(e);
    }
}

From source file:org.hashbang.util.AutoDiscoverQueue.java

License:Open Source License

public static String getInfo() {

    Message message = null;
    String msg = null;//from   www.ja v a  2  s  .  c o m

    try {
        // Receive messages
        AmazonSQS sqs = init();
        ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(QUEUE_URL);
        sqs.receiveMessage(receiveMessageRequest);
        message = sqs.receiveMessage(receiveMessageRequest).getMessages().get(0);

        msg = message.getBody();
        sqs.deleteMessage(new DeleteMessageRequest(QUEUE_URL, message.getReceiptHandle()));

    } 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());
    } finally {
        return msg;
    }
}

From source file:org.juneja.eventdemo.utils.AmazonSimpleQueueService.java

License:Open Source License

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

    /*/*from w  w  w . j  a va2s.  com*/
     * 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);
    }

    AmazonSQS sqs = new AmazonSQSClient(credentials);
    Region usWest2 = Region.getRegion(Regions.DEFAULT_REGION);
    sqs.setRegion(usWest2);

    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("TestQueue_EventDriven_2");
        // String myQueueUrl = sqs.createQueue(createQueueRequest).getQueueUrl();

        GetQueueUrlResult queueResult = sqs.getQueueUrl("TestQueue_EventDriven_2");
        String myQueueUrl = queueResult.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, "This is my new text."));

        // Receive messages
        System.out.println("Receiving messages from MyQueue.\n");
        ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(myQueueUrl);
        List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();

        System.out.println("Number of messages : " + messages.size());

        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 messageRecieptHandle = messages.get(0).getReceiptHandle();
        //sqs.deleteMessage(new DeleteMessageRequest(myQueueUrl, messageRecieptHandle));

        // Delete a queue
        /**
        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:org.mule.modules.sqs.SQSConnector.java

License:Open Source License

/**
 * Attempts to receive a message from the queue. Every attribute of the incoming
 * message will be added as an inbound property. Also the following properties
 * will also be added://w  w w  . j ava  2  s  . c om
 * <p/>
 * sqs.message.id = containing the message identification
 * sqs.message.receipt.handle = containing the message identification
 * <p/>
 * {@sample.xml ../../../doc/mule-module-sqs.xml.sample sqs:receive-messages}
 *
 * @param callback          Callback to call when a new message is available.
 * @param visibilityTimeout the duration (in seconds) the retrieved message is hidden from
 *                          subsequent calls to retrieve.
 * @param preserveMessages    Flag that indicates if you want to preserve the messages
 *                            in the queue. False by default, so the messages are
 *                            going to be deleted.
 * @param pollPeriod        time in milliseconds to wait between polls (when no messages were retrieved). 
 *                          Default period is 1000 ms.
 * @param numberOfMessages  the number of messages to be retrieved on each call (10 messages max). 
 *                      By default, 1 message will be retrieved.                                 
 * @throws AmazonClientException
 *             If any internal errors are encountered inside the client while
 *             attempting to make the request or handle the response.  For example
 *             if a network connection is not available.
 * @throws AmazonServiceException
 *             If an error response is returned by AmazonSQS indicating
 *             either a problem with the data in the request, or a server side issue.
 */
@Source
@InvalidateConnectionOn(exception = AmazonClientException.class)
public void receiveMessages(SourceCallback callback, @Optional @Default("30") Integer visibilityTimeout,
        @Optional @Default("false") Boolean preserveMessages, @Optional @Default("1000") Long pollPeriod,
        @Optional @Default("1") Integer numberOfMessages) throws AmazonServiceException {

    List<Message> messages;
    ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest();
    receiveMessageRequest.setQueueUrl(getQueueUrl());

    if (visibilityTimeout != null) {
        receiveMessageRequest.setVisibilityTimeout(visibilityTimeout);
    }
    receiveMessageRequest.setMaxNumberOfMessages(numberOfMessages);

    while (!Thread.interrupted()) {
        messages = msgQueue.receiveMessage(receiveMessageRequest).getMessages();
        try {
            if (messages.size() == 0) {
                Thread.sleep(pollPeriod);
                continue;
            }
            for (Message msg : messages) {
                callback.process(msg.getBody(), createProperties(msg));
                if (!preserveMessages) {
                    msgQueue.deleteMessage(new DeleteMessageRequest(getQueueUrl(), msg.getReceiptHandle()));
                }
            }
        } catch (InterruptedException e) {
            logger.error(e.getMessage(), e);
        } catch (Exception e) {
            throw new AmazonClientException("Error while processing message.", e);
        }
    }
}