List of usage examples for com.amazonaws.services.sqs.model ReceiveMessageResult getMessages
public java.util.List<Message> getMessages()
A list of messages.
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()); }