Example usage for com.amazonaws.services.sqs.model SendMessageBatchRequest SendMessageBatchRequest

List of usage examples for com.amazonaws.services.sqs.model SendMessageBatchRequest SendMessageBatchRequest

Introduction

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

Prototype

public SendMessageBatchRequest() 

Source Link

Document

Default constructor for SendMessageBatchRequest object.

Usage

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());
    }

}