List of usage examples for com.amazonaws.services.sqs.model Message getAttributes
public java.util.Map<String, String> getAttributes()
A map of the attributes requested in ReceiveMessage
to their respective values.
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); }//from w w w . j ava2s . co 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
@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(/*from w w w . j av a 2 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.juneja.eventdemo.utils.AmazonSimpleQueueService.java
License:Open Source License
public static void main(String[] args) throws Exception { /*//from w w w.j a va2s . co 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); } 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
/** * @param msg Message to extract properties from. * @return map with properties/*from w ww . j av a 2s .c om*/ */ public Map<String, Object> createProperties(Message msg) { Map<String, Object> properties = new HashMap<String, Object>(); properties.putAll(msg.getAttributes()); properties.put("sqs.message.id", msg.getMessageId()); properties.put("sqs.message.receipt.handle", msg.getReceiptHandle()); return properties; }
From source file:Reference.SimpleQueueServiceSample.java
License:Open Source License
public static void main(String[] args) throws Exception { /*//from w ww . ja va2 s . co m * The ProfileCredentialsProvider will return your [default] * credential profile by reading from the credentials file located at * (). */ AWSCredentials credentials = null; try { credentials = new ProfileCredentialsProvider("default").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 (/Users/daniel/.aws/credentials), and is in valid format.", e); } 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, "This is my message 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 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:sqs_examples.SimpleQueueServiceSample.java
License:Open Source License
public static void main(String[] args) throws Exception { /*//from ww w.ja v a2 s . c o m * The ProfileCredentialsProvider will return your [default] * credential profile by reading from the credentials file located at * (/Users/pmacharl/.aws/credentials). */ AWSCredentials credentials = null; try { credentials = new ProfileCredentialsProvider("default").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 (/Users/pmacharl/.aws/credentials), and is in valid format.", e); } AmazonSQS sqs = new AmazonSQSClient(credentials); Region usWest2 = Region.getRegion(Regions.US_WEST_2); 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("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, "This is my message 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 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:twitter.SimpleQueueServiceSample.java
License:Open Source License
public static void main(String[] args) throws Exception { /*//from ww w . j a va 2 s .c om * 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 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(); System.out.println("queueUrl is:" + myQueueUrl); // 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"); String id = "2"; String tweet = "I am hungry"; String workRequest = "{" + " \"id\": \"" + id + "\"," + " \"tweet\": \"" + tweet + "\"" + "}"; sqs.sendMessage(new SendMessageRequest().withQueueUrl(myQueueUrl).withMessageBody(workRequest)); // sqs.sendMessage(new SendMessageRequest(myQueueUrl, "This is my message text.")); // Receive messages System.out.println("Receiving messages from MyQueue.\n"); // ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(myQueueUrl); // List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages(); Thread.sleep(5000); String id2 = "3"; String t = "yes,it is"; String workRequest1 = "{" + " \"id\": \"" + id2 + "\"," + " \"tweet\": \"" + t + "\"" + "}"; sqs.sendMessage(new SendMessageRequest().withQueueUrl(myQueueUrl).withMessageBody(workRequest1)); ReceiveMessageRequest receiveMessageRequest1 = new ReceiveMessageRequest(myQueueUrl); List<Message> messages = sqs.receiveMessage(receiveMessageRequest1).getMessages(); System.out.println("!!!!!" + 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:util.SQSManager.java
License:Open Source License
public List<Message> receiveMessage() { List<Message> messages = null; try {//from w w w . j a v a2 s.co m // Receive messages System.out.println("Receiving messages from MyQueue.\n"); ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(myQueueUrl); // receiveMessageRequest.setMaxNumberOfMessages(1); // receiveMessageRequest.setWaitTimeSeconds(20); 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(); } catch (Exception e) { e.printStackTrace(); throw e; } return messages; }