You can now use the Amazon S3 Transfer Manager (Developer Preview)
Sending, receiving, and deleting Amazon Simple Queue Service 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 Simple Queue Service 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.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;
Code
sqsClient.sendMessage(SendMessageRequest.builder() .queueUrl(queueUrl) .messageBody("Hello world!") .delaySeconds(10) .build());
Send multiple messages in a request
Send more than one message in a single request by using the SqsClient sendMessageBatch
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.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;
Code
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(); sqsClient.sendMessageBatch(sendMessageBatchRequest);
See the
complete sample
Retrieve Messages
Retrieve any messages that are currently in the queue by calling the SqsClient receiveMessage
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.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;
Code
ReceiveMessageRequest receiveMessageRequest = ReceiveMessageRequest.builder() .queueUrl(queueUrl) .maxNumberOfMessages(5) .build(); List<Message> messages = sqsClient.receiveMessage(receiveMessageRequest).messages(); return messages; } catch (SqsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return null;
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 SqsClient deleteMessage
method.
Imports
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;
Code
try { for (Message message : messages) { DeleteMessageRequest deleteMessageRequest = DeleteMessageRequest.builder() .queueUrl(queueUrl) .receiptHandle(message.receiptHandle()) .build(); sqsClient.deleteMessage(deleteMessageRequest); }
See the
complete sample
More Info
-
How Amazon Simple Queue Service Queues Work in the Amazon Simple Queue Service Developer Guide
-
SendMessage in the Amazon Simple Queue Service API Reference
-
SendMessageBatch in the Amazon Simple Queue Service API Reference
-
ReceiveMessage in the Amazon Simple Queue Service API Reference
-
DeleteMessage in the Amazon Simple Queue Service API Reference