Example usage for com.amazonaws.services.sqs.model ReceiveMessageResult getMessages

List of usage examples for com.amazonaws.services.sqs.model ReceiveMessageResult getMessages

Introduction

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

Prototype


public java.util.List<Message> getMessages() 

Source Link

Document

A list of messages.

Usage

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

License:Apache License

@Override
public Set<Task> take(int maxTasks) throws TimeoutException {
    ReceiveMessageResult result = sqsClient.receiveMessage(new ReceiveMessageRequest().withQueueUrl(queueUrl)
            .withMaxNumberOfMessages(maxTasks).withAttributeNames("SentTimestamp", "ApproximateReceiveCount"));
    if (result.getMessages() != null && result.getMessages().size() > 0) {
        Set<Task> tasks = new HashSet<>();
        for (Message msg : result.getMessages()) {

            // The Amazon docs claim this attribute is 'returned as an integer
            // representing the epoch time in milliseconds.'
            // http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryReceiveMessage.html
            try {
                Long sentTime = Long.parseLong(msg.getAttributes().get("SentTimestamp"));
                Long preworkQueueTime = System.currentTimeMillis() - sentTime;
                log.info(//  w  ww.  j a v a2  s .  co m
                        "SQS message received - queue: {}, queueUrl: {}, msgId: {},"
                                + " preworkQueueTime: {}, receiveCount: {}",
                        queueName, queueUrl, msg.getMessageId(),
                        DurationFormatUtils.formatDuration(preworkQueueTime, "HH:mm:ss,SSS"),
                        msg.getAttributes().get("ApproximateReceiveCount"));
            } catch (NumberFormatException nfe) {
                log.error("Error converting 'SentTimestamp' SQS message" + " attribute to Long, messageId: "
                        + msg.getMessageId(), nfe);
            }

            Task task = marshallTask(msg);
            task.setVisibilityTimeout(visibilityTimeout);
            tasks.add(task);
        }

        return tasks;
    } else {
        throw new TimeoutException("No tasks available from queue: " + queueName + ", queueUrl: " + queueUrl);
    }
}

From source file:org.duracloud.common.sns.SnsSubscriptionManager.java

License:Apache License

private void startPolling() {
    new Thread(new Runnable() {
        @Override/*from  w w  w  .  j  a va 2s.com*/
        public void run() {
            while (initialized) {
                try {
                    ReceiveMessageResult result = sqsClient.receiveMessage(queueUrl);
                    List<Message> messages = result.getMessages();
                    for (Message message : messages) {
                        dispatch(message);
                        log.debug("{} dispatched", message);
                        sqsClient.deleteMessage(queueUrl, message.getReceiptHandle());
                        log.debug("{} deleted", message);
                    }

                } catch (Exception ex) {
                    log.warn("failed to poll queue: " + ex.getMessage(), ex);
                }
            }
        }

    }, "sqs-long-poller").start();
}

From source file:org.lendingclub.reflex.aws.sqs.SQSAdapter.java

License:Apache License

@SuppressWarnings("unchecked")
public synchronized <T extends SQSAdapter> T start() {
    if (running.get()) {
        logger.warn("already running");
        return (T) this;
    }//from w  w  w  . j av a 2s.  co m

    Preconditions.checkArgument(sqs != null, "SQSClient must be set");
    if (urlSupplier == null && queueName != null) {
        urlSupplier = Suppliers.memoize(new SQSUrlSupplier(sqs, queueName));
    }

    if (urlSupplier == null) {
        throw new IllegalArgumentException("queueUrl or queueName must be set");
    }

    Runnable r = new Runnable() {

        public void run() {

            running.set(true);
            while (running.get()) {

                try {

                    if (isRunning()) {

                        ReceiveMessageRequest rmr = new ReceiveMessageRequest();
                        rmr.setWaitTimeSeconds(getWaitTimeSeconds());
                        rmr.setMaxNumberOfMessages(getMessagesPerRequest());
                        if (urlSupplier == null) {
                            throw new IllegalArgumentException("queueUrl or queueName must be set");
                        }

                        rmr.setQueueUrl(urlSupplier.get());
                        ReceiveMessageResult result = sqs.receiveMessage(rmr);
                        List<Message> list = result.getMessages();

                        if (list != null) {
                            for (Message message : list) {
                                try {
                                    messageReceiveCount.incrementAndGet();
                                    if (logger.isDebugEnabled()) {
                                        logger.debug("received: {}", message.getMessageId());
                                    }
                                    SQSMessage sqs = new SQSMessage();
                                    sqs.message = message;

                                    subject.onNext(sqs);
                                    if (autoDelete) {
                                        delete(message);
                                    }
                                    dispatchSuccessCount.incrementAndGet();
                                    resetFailureCount();
                                } catch (Exception e) {
                                    handleException(e);
                                }
                            }
                        }
                    } else {
                        logger.info("{} is paused", this);
                        Thread.sleep(10000);
                    }

                } catch (Throwable e) {
                    Exceptions.throwIfFatal(e);
                    handleException(e);
                }
            }
            logger.info("stopped");
        }
    };

    String threadNameFormat = String.format("%s-%s", "SQSAdapter",
            (Strings.isNullOrEmpty(name) ? Integer.toHexString(hashCode()) : name)) + "-%d";

    ThreadFactoryBuilder tfb = new ThreadFactoryBuilder().setDaemon(true).setNameFormat(threadNameFormat);

    Thread t = tfb.build().newThread(r);
    logger.info("starting thread: {}", t);
    t.start();

    return (T) this;
}

From source file:org.springframework.cloud.aws.messaging.core.QueueMessageChannel.java

License:Apache License

@Override
public Message<String> receive(long timeout) {
    ReceiveMessageResult receiveMessageResult = this.amazonSqs
            .receiveMessage(new ReceiveMessageRequest(this.queueUrl).withMaxNumberOfMessages(1)
                    .withWaitTimeSeconds(Long.valueOf(timeout).intValue()).withAttributeNames(ATTRIBUTE_NAMES)
                    .withMessageAttributeNames(MESSAGE_ATTRIBUTE_NAMES));
    if (receiveMessageResult.getMessages().isEmpty()) {
        return null;
    }//  w w w.j a v a2  s  .  co m
    com.amazonaws.services.sqs.model.Message amazonMessage = receiveMessageResult.getMessages().get(0);
    Message<String> message = createMessage(amazonMessage);
    this.amazonSqs.deleteMessage(new DeleteMessageRequest(this.queueUrl, amazonMessage.getReceiptHandle()));
    return message;
}

From source file:org.springframework.integration.aws.sqs.core.AmazonSQSOperationsImpl.java

License:Apache License

/**
 * Gets the specified number of Messages from SQS
 *//*from w  w  w. j a v  a 2  s .c  om*/
public Collection<AmazonSQSMessage> receiveMessages(String queueURL, int maxNumberOfMessages) {
    ReceiveMessageRequest request = new ReceiveMessageRequest(queueURL);
    if (maxNumberOfMessages > 0)
        request.withMaxNumberOfMessages(maxNumberOfMessages);
    else
        request.withMaxNumberOfMessages(1);

    ReceiveMessageResult result;
    try {
        result = clientFactory.getClient(queueURL).receiveMessage(request);
    } catch (Exception e) {
        logger.error("Exception thrown while receiving a message from the queue \"" + queueURL
                + "\", check exception for more details", e);
        throw new AmazonSQSException(credentials.getAccessKey(),
                "Exception while receiving message from the queue \"" + queueURL
                        + "\", see nested exception for more details",
                queueURL, null, e);
    }
    List<Message> messages = result.getMessages();
    Collection<AmazonSQSMessage> response = new ArrayList<AmazonSQSMessage>();
    for (Message message : messages) {
        buildSQSMessage(response, message);
    }
    return response;
}

From source file:pl.worker.Main.java

public static String getMessage(String url) {
    final AmazonSQS sqsClient = new AmazonSQSClient();
    final ReceiveMessageRequest request = new ReceiveMessageRequest(url);
    request.setMaxNumberOfMessages(1);/*from   w w w . j a v  a  2 s  .c  o  m*/
    ReceiveMessageResult result = sqsClient.receiveMessage(request);
    List<Message> messages = result.getMessages();
    if (messages.isEmpty()) {
        return null;
    }
    String body = messages.get(0).getBody();
    sqsClient.deleteMessage(url, messages.get(0).getReceiptHandle());
    return body;
}

From source file:smartthings.brave.sqs.AmazonSQSClientParser.java

License:Apache License

public void response(ReceiveMessageResult result, SpanCustomizer customizer) {
    for (Message message : result.getMessages()) {
        customizer.tag(AmazonSQSTraceKeys.SQS_MESSAGE_ID, message.getMessageId());
    }/* ww w.ja  v  a  2 s .co  m*/
}

From source file:smartthings.brave.sqs.AmazonSQSRule.java

License:Apache License

public List<Span> getSpans(boolean delete) {

    Stream<Span> spans = Stream.empty();

    ReceiveMessageResult result = client.receiveMessage(queueUrl);

    while (result != null && result.getMessages().size() > 0) {

        spans = Stream.concat(spans,
                result.getMessages().stream().flatMap(m -> fromBase64(m.getBody()).stream()));

        result = client.receiveMessage(queueUrl);

        if (delete) {
            List<DeleteMessageRequest> deletes = result.getMessages().stream()
                    .map(m -> new DeleteMessageRequest(queueUrl, m.getReceiptHandle()))
                    .collect(Collectors.toList());
            deletes.forEach(d -> client.deleteMessage(d));
        }//from  w  w w  .  ja v a2s.  co  m
    }

    return spans.collect(Collectors.toList());
}

From source file:smartthings.brave.sqs.TracingAmazonSQSClient.java

License:Apache License

@Override
public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageRequest) {
    receiveMessageRequest = receiveMessageRequest.withMessageAttributeNames(tracing.propagation().keys());

    ReceiveMessageResult result = delegate.receiveMessage(receiveMessageRequest);

    // complete in flight one-way spans for all received messages
    for (Message message : result.getMessages()) {
        TraceContextOrSamplingFlags traceContextOrSamplingFlags = extractor
                .extract(message.getMessageAttributes());
        TraceContext ctx = traceContextOrSamplingFlags.context();
        Span oneWay = withEndpoint((ctx != null) ? tracing.tracer().joinSpan(ctx)
                : tracing.tracer().newTrace(traceContextOrSamplingFlags.samplingFlags()));

        oneWay.kind(Span.Kind.SERVER);/*  w  w  w. j a v  a 2 s  . c o m*/
        parser.response(result, oneWay);
        oneWay.annotate("receive-" + parser.spanName(receiveMessageRequest.getQueueUrl()));
        oneWay.start().flush();
    }

    return result;
}

From source file:zipkin.junit.aws.AmazonSQSRule.java

License:Apache License

public List<Span> getSpans(boolean delete) {

    Stream<Span> spans = Stream.empty();

    ReceiveMessageResult result = client.receiveMessage(queueUrl);

    while (result != null && result.getMessages().size() > 0) {

        spans = Stream.concat(spans, result.getMessages().stream().flatMap(AmazonSQSRule::decodeSpans));

        result = client.receiveMessage(queueUrl);

        if (delete) {
            List<DeleteMessageRequest> deletes = result.getMessages().stream()
                    .map(m -> new DeleteMessageRequest(queueUrl, m.getReceiptHandle()))
                    .collect(Collectors.toList());
            deletes.forEach(d -> client.deleteMessage(d));
        }/*from w  ww  .j a  v a  2 s  .  co m*/
    }

    return spans.collect(Collectors.toList());
}