List of usage examples for com.amazonaws.services.sqs.model SendMessageBatchRequest SendMessageBatchRequest
public SendMessageBatchRequest()
From source file:aws.example.sqs.SendReceiveMessages.java
License:Open Source License
public static void main(String[] args) { final AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); try {//from w w w .ja va 2 s.com CreateQueueResult create_result = sqs.createQueue(QUEUE_NAME); } catch (AmazonSQSException e) { if (!e.getErrorCode().equals("QueueAlreadyExists")) { throw e; } } String queueUrl = sqs.getQueueUrl(QUEUE_NAME).getQueueUrl(); SendMessageRequest send_msg_request = new SendMessageRequest().withQueueUrl(queueUrl) .withMessageBody("hello world").withDelaySeconds(5); sqs.sendMessage(send_msg_request); // Send multiple messages to the queue SendMessageBatchRequest send_batch_request = new SendMessageBatchRequest().withQueueUrl(queueUrl) .withEntries(new SendMessageBatchRequestEntry("msg_1", "Hello from message 1"), new SendMessageBatchRequestEntry("msg_2", "Hello from message 2").withDelaySeconds(10)); sqs.sendMessageBatch(send_batch_request); // receive messages from the queue List<Message> messages = sqs.receiveMessage(queueUrl).getMessages(); // delete messages from the queue for (Message m : messages) { sqs.deleteMessage(queueUrl, m.getReceiptHandle()); } }
From source file:jp.classmethod.aws.gradle.sqs.AmazonSQSSendMessagesTask.java
License:Apache License
@TaskAction public void sendMessages() { String queueUrl = getQueueUrl(); Stream<String> messages = getMessages(); if (queueUrl == null) { throw new GradleException("Must specify either queueName or queueUrl"); }/*w w w. j a va 2 s . co m*/ if (messages == null) { throw new GradleException("Must provide messages to send to SQS"); } AmazonSQSPluginExtension ext = getProject().getExtensions().getByType(AmazonSQSPluginExtension.class); AmazonSQS sqs = ext.getClient(); final AtomicInteger counter = new AtomicInteger(0); List<SendMessageBatchRequestEntry> messageEntries = messages .map(message -> new SendMessageBatchRequestEntry() .withId("gradle_message_index_" + counter.getAndIncrement()).withMessageBody(message)) .collect(Collectors.toList()); getLogger().info("Sending {} messages to {}", messageEntries.size(), queueUrl); Lists.partition(messageEntries, MAX_MESSAGE_SEND_BATCH_SIZE).parallelStream() .forEach(messagesToSend -> sqs.sendMessageBatch( new SendMessageBatchRequest().withQueueUrl(queueUrl).withEntries(messagesToSend))); }
From source file:org.apache.nifi.processors.aws.sqs.PutSQS.java
License:Apache License
@Override public void onTrigger(final ProcessContext context, final ProcessSession session) { FlowFile flowFile = session.get();// ww w . j a va 2s . c om if (flowFile == null) { return; } final long startNanos = System.nanoTime(); final AmazonSQSClient client = getClient(); final SendMessageBatchRequest request = new SendMessageBatchRequest(); final String queueUrl = context.getProperty(QUEUE_URL).evaluateAttributeExpressions(flowFile).getValue(); request.setQueueUrl(queueUrl); final Set<SendMessageBatchRequestEntry> entries = new HashSet<>(); final SendMessageBatchRequestEntry entry = new SendMessageBatchRequestEntry(); entry.setId(flowFile.getAttribute("uuid")); final ByteArrayOutputStream baos = new ByteArrayOutputStream(); session.exportTo(flowFile, baos); final String flowFileContent = baos.toString(); entry.setMessageBody(flowFileContent); final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); for (final PropertyDescriptor descriptor : userDefinedProperties) { final MessageAttributeValue mav = new MessageAttributeValue(); mav.setDataType("String"); mav.setStringValue(context.getProperty(descriptor).evaluateAttributeExpressions(flowFile).getValue()); messageAttributes.put(descriptor.getName(), mav); } entry.setMessageAttributes(messageAttributes); entry.setDelaySeconds(context.getProperty(DELAY).asTimePeriod(TimeUnit.SECONDS).intValue()); entries.add(entry); request.setEntries(entries); try { client.sendMessageBatch(request); } catch (final Exception e) { getLogger().error("Failed to send messages to Amazon SQS due to {}; routing to failure", new Object[] { e }); flowFile = session.penalize(flowFile); session.transfer(flowFile, REL_FAILURE); return; } getLogger().info("Successfully published message to Amazon SQS for {}", new Object[] { flowFile }); session.transfer(flowFile, REL_SUCCESS); final long transmissionMillis = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNanos); session.getProvenanceReporter().send(flowFile, queueUrl, transmissionMillis); }
From source file:org.duracloud.common.queue.aws.SQSTaskQueue.java
License:Apache License
private void sendBatchMessages(Set<SendMessageBatchRequestEntry> msgEntries) { try {/*w w w . ja v a2 s . c om*/ final SendMessageBatchRequest sendMessageBatchRequest = new SendMessageBatchRequest() .withQueueUrl(queueUrl).withEntries(msgEntries); new Retrier(4, 5000, 2).execute(new Retriable() { @Override public Object retry() throws Exception { sqsClient.sendMessageBatch(sendMessageBatchRequest); return null; } }); log.info("{} SQS messages successfully placed on queue: {}", msgEntries.size(), queueName); } catch (Exception ex) { log.error("failed to place {} on {} due to {}", msgEntries, queueName, ex.getMessage()); throw new DuraCloudRuntimeException(ex); } }
From source file:scheduler.SQSService.java
License:Apache License
public void batchSend(List<SendMessageBatchRequestEntry> entries) { try {//from ww w .j a v a 2s.co m // Send batch messages //System.out.println("\nSending a message to jobQueue.\n"); SendMessageBatchRequest batchRequest = new SendMessageBatchRequest().withQueueUrl(queueUrl); batchRequest.setEntries(entries); SendMessageBatchResult batchResult = sqs.sendMessageBatch(batchRequest); // sendMessageBatch can return successfully, and yet individual batch // items fail. So, make sure to retry the failed ones. if (!batchResult.getFailed().isEmpty()) { //System.out.println("Retry sending failed messages..."); List<SendMessageBatchRequestEntry> failedEntries = new ArrayList<SendMessageBatchRequestEntry>(); Iterator<SendMessageBatchRequestEntry> iter = entries.iterator(); while (iter.hasNext()) { if (batchResult.getFailed().contains(iter.next())) { failedEntries.add((SendMessageBatchRequestEntry) iter.next()); } } batchRequest.setEntries(failedEntries); sqs.sendMessageBatch(batchRequest); } } 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()); } }