List of usage examples for com.amazonaws.services.sqs.model Message getBody
public String getBody()
The message's contents (not URL-encoded).
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); } } }