Send, receive, and delete 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.
The sqsClient
variable that is used in the following examples can be created
from the following snippet.
SqsClient sqsClient = SqsClient.create();
When you create an SqsClient
by using the static create()
method,
the SDK configures the Region by using the default region provider chain and the credentials by using the default credentials provider chain.
Send a message
Add a single message to an Amazon Simple Queue Service queue by calling the SqsClient client sendMessage
method.
Provide a
SendMessageRequest
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()); sqsClient.sendMessage(sendMsgRequest);
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
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
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 { 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;
See the complete sample
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's
deleteMessage
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