The AWS Java SDK for Amazon SQS module provides client classes for communicating with Amazon Simple Queue Service
npx @tessl/cli install tessl/maven-com-amazonaws--aws-java-sdk-sqs@1.12.0The AWS Java SDK for Amazon SQS module provides Java client classes for communicating with Amazon Simple Queue Service (SQS). It enables developers to interact with AWS's fully managed message queuing service, supporting both standard and FIFO queues with comprehensive functionality for creating, configuring, and managing queues, sending and receiving messages, handling message attributes, and implementing reliable distributed communication patterns.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-sqs</artifactId>
<version>1.12.789</version>
</dependency>import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
import com.amazonaws.services.sqs.model.*;For asynchronous operations:
import com.amazonaws.services.sqs.AmazonSQSAsync;
import com.amazonaws.services.sqs.AmazonSQSAsyncClientBuilder;For buffered/optimized operations:
import com.amazonaws.services.sqs.buffered.AmazonSQSBufferedAsyncClient;
import com.amazonaws.services.sqs.buffered.QueueBufferConfig;import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
import com.amazonaws.services.sqs.model.*;
// Create SQS client
AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient();
// Create a queue
CreateQueueRequest createRequest = new CreateQueueRequest("my-queue");
CreateQueueResult createResult = sqs.createQueue(createRequest);
String queueUrl = createResult.getQueueUrl();
// Send a message
SendMessageRequest sendRequest = new SendMessageRequest()
.withQueueUrl(queueUrl)
.withMessageBody("Hello from SQS!");
SendMessageResult sendResult = sqs.sendMessage(sendRequest);
// Receive messages
ReceiveMessageRequest receiveRequest = new ReceiveMessageRequest(queueUrl);
ReceiveMessageResult receiveResult = sqs.receiveMessage(receiveRequest);
for (Message message : receiveResult.getMessages()) {
System.out.println("Message: " + message.getBody());
// Delete the message after processing
sqs.deleteMessage(new DeleteMessageRequest()
.withQueueUrl(queueUrl)
.withReceiptHandle(message.getReceiptHandle()));
}The AWS Java SDK for SQS is organized around several key components:
AmazonSQS (sync) and AmazonSQSAsync (async) provide the core APIAmazonSQSClient, AmazonSQSAsyncClient) and optimized buffered client (AmazonSQSBufferedAsyncClient)Core client creation, configuration, and lifecycle management for connecting to Amazon SQS.
// Main synchronous client interface
interface AmazonSQS {
void setEndpoint(String endpoint);
void setRegion(Region region);
void shutdown();
ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request);
}
// Client builder for configuration
class AmazonSQSClientBuilder {
static AmazonSQSClientBuilder standard();
static AmazonSQS defaultClient();
AmazonSQS build();
}Complete queue lifecycle management including creation, deletion, configuration, and listing.
CreateQueueResult createQueue(CreateQueueRequest request);
DeleteQueueResult deleteQueue(DeleteQueueRequest request);
GetQueueUrlResult getQueueUrl(GetQueueUrlRequest request);
GetQueueAttributesResult getQueueAttributes(GetQueueAttributesRequest request);
SetQueueAttributesResult setQueueAttributes(SetQueueAttributesRequest request);
ListQueuesResult listQueues(ListQueuesRequest request);
PurgeQueueResult purgeQueue(PurgeQueueRequest request);Send, receive, and delete messages with support for both individual and batch operations.
SendMessageResult sendMessage(SendMessageRequest request);
SendMessageBatchResult sendMessageBatch(SendMessageBatchRequest request);
ReceiveMessageResult receiveMessage(ReceiveMessageRequest request);
DeleteMessageResult deleteMessage(DeleteMessageRequest request);
DeleteMessageBatchResult deleteMessageBatch(DeleteMessageBatchRequest request);Control message visibility timeouts to manage processing time and prevent duplicate processing.
ChangeMessageVisibilityResult changeMessageVisibility(ChangeMessageVisibilityRequest request);
ChangeMessageVisibilityBatchResult changeMessageVisibilityBatch(ChangeMessageVisibilityBatchRequest request);Manage queue access permissions for cross-account access and IAM integration.
AddPermissionResult addPermission(AddPermissionRequest request);
RemovePermissionResult removePermission(RemovePermissionRequest request);Add, list, and remove cost allocation tags for queue organization and billing.
TagQueueResult tagQueue(TagQueueRequest request);
ListQueueTagsResult listQueueTags(ListQueueTagsRequest request);
UntagQueueResult untagQueue(UntagQueueRequest request);Manage dead letter queue functionality and message redrive operations.
ListDeadLetterSourceQueuesResult listDeadLetterSourceQueues(ListDeadLetterSourceQueuesRequest request);
StartMessageMoveTaskResult startMessageMoveTask(StartMessageMoveTaskRequest request);
CancelMessageMoveTaskResult cancelMessageMoveTask(CancelMessageMoveTaskRequest request);
ListMessageMoveTasksResult listMessageMoveTasks(ListMessageMoveTasksRequest request);Non-blocking operations with Future-based return types and callback support for improved performance.
interface AmazonSQSAsync extends AmazonSQS {
Future<SendMessageResult> sendMessageAsync(SendMessageRequest request);
Future<SendMessageResult> sendMessageAsync(SendMessageRequest request,
AsyncHandler<SendMessageRequest, SendMessageResult> asyncHandler);
Future<ReceiveMessageResult> receiveMessageAsync(ReceiveMessageRequest request);
// All synchronous operations have async equivalents
}High-performance client with automatic batching, prefetching, and configurable optimization settings.
class AmazonSQSBufferedAsyncClient implements AmazonSQSAsync {
// Inherits all AmazonSQSAsync methods with optimized implementations
}
class QueueBufferConfig {
// Configuration for batching and prefetching behavior
QueueBufferConfig withMaxBatchSize(int maxBatchSize);
QueueBufferConfig withFlushTimeoutSeconds(long flushTimeoutSeconds);
QueueBufferConfig withVisibilityTimeoutSeconds(long visibilityTimeoutSeconds);
}// Primary message container
class Message {
String getMessageId();
String getReceiptHandle();
String getBody();
String getMD5OfBody();
Map<String, String> getAttributes();
Map<String, MessageAttributeValue> getMessageAttributes();
String getMD5OfMessageAttributes();
}
// Message attributes for additional metadata
class MessageAttributeValue {
String getStringValue();
java.nio.ByteBuffer getBinaryValue();
List<String> getStringListValues();
List<java.nio.ByteBuffer> getBinaryListValues();
String getDataType();
}
// Queue attribute enumeration
enum QueueAttributeName {
All, Policy, VisibilityTimeout, MaximumMessageSize, MessageRetentionPeriod,
ApproximateNumberOfMessages, ApproximateNumberOfMessagesNotVisible,
CreatedTimestamp, LastModifiedTimestamp, QueueArn, DelaySeconds,
ReceiveMessageWaitTimeSeconds, RedrivePolicy, FifoQueue, ContentBasedDeduplication,
KmsMasterKeyId, KmsDataKeyReusePeriodSeconds, DeduplicationScope,
FifoThroughputLimit, RedriveAllowPolicy, SqsManagedSseEnabled
}
// Batch operation error details
class BatchResultErrorEntry {
String getId();
boolean isSenderFault();
String getCode();
String getMessage();
}