AWS SDK for Java
Developer Guide

Sending, Receiving, and Deleting Amazon SQS Messages

A message is a piece of data that can be sent and received by distributed components. Messages are always delivered using an SQS Queue.

Send a Message

Add a single message to an Amazon SQS queue by calling the SqsClient client sendMessage method. Provide a SendMessageRequest object that contains the queue's URL, message body, and optional delay value (in seconds).

Imports

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.model.SendMessageBatchRequestEntry;

Code

System.out.println("\nSend message"); sqsClient.sendMessage(SendMessageRequest.builder() .queueUrl(queueUrl) .messageBody("Hello world!") .delaySeconds(10)

Send Multiple Messages in a Request

Send more than one message in a single request by using the SqsClientsendMessageBatch method. This method takes a SendMessageBatchRequest that contains the queue URL and a list of messages to send. (Each message is a SendMessageBatchRequestEntry.) You can also delay sending a specific message by setting a delay value on the message.

Imports

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest; import software.amazon.awssdk.services.sqs.model.SendMessageBatchRequest;

Code

System.out.println("\nSend multiple messages"); SendMessageBatchRequest sendMessageBatchRequest = SendMessageBatchRequest.builder() .queueUrl(queueUrl) .entries(SendMessageBatchRequestEntry.builder().id("id1").messageBody("Hello from msg 1").build(), SendMessageBatchRequestEntry.builder().id("id2").messageBody("msg 2").delaySeconds(10).build()) .build();

See the complete sample on GitHub.

Retrieve Messages

Retrieve any messages that are currently in the queue by calling the SqsClientreceiveMessage method. This method takes a ReceiveMessageRequest that contains the queue URL. You can also specify the maximum number of messages to return. Messages are returned as a list of Message objects.

Imports

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.model.Message;

Code

System.out.println("\nReceive messages"); ReceiveMessageRequest receiveMessageRequest = ReceiveMessageRequest.builder() .queueUrl(queueUrl) .maxNumberOfMessages(5) .build();

Delete a Message After Receipt

After receiving a message and processing its contents, delete the message from the queue by sending the message's receipt handle and queue URL to the SqsClientdeleteMessage method.

Imports

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.model.DeleteMessageRequest;

Code

System.out.println("\nDelete Messages"); for (Message message : messages) { DeleteMessageRequest deleteMessageRequest = DeleteMessageRequest.builder() .queueUrl(queueUrl) .receiptHandle(message.receiptHandle()) .build(); sqsClient.deleteMessage(deleteMessageRequest);

See the complete sample on GitHub.

More Info