The AWS Java SDK for Amazon SQS module provides client classes for communicating with Amazon Simple Queue Service
—
Queue operations provide comprehensive management capabilities for Amazon SQS queues, including creation, deletion, configuration, listing, and maintenance. These operations handle both standard and FIFO queues with full support for all queue attributes and configuration options.
Create a new SQS queue with optional configuration attributes.
CreateQueueResult createQueue(CreateQueueRequest request);
// Convenience method
CreateQueueResult createQueue(String queueName);
class CreateQueueRequest extends AmazonWebServiceRequest {
CreateQueueRequest();
CreateQueueRequest(String queueName);
String getQueueName();
CreateQueueRequest withQueueName(String queueName);
Map<String, String> getAttributes();
CreateQueueRequest withAttributes(Map<String, String> attributes);
CreateQueueRequest addAttributesEntry(String key, String value);
Map<String, String> getTags();
CreateQueueRequest withTags(Map<String, String> tags);
CreateQueueRequest addTagsEntry(String key, String value);
}
class CreateQueueResult {
String getQueueUrl();
}Usage Example:
// Simple queue creation
CreateQueueRequest request = new CreateQueueRequest("MyQueue");
CreateQueueResult result = client.createQueue(request);
String queueUrl = result.getQueueUrl();
System.out.println("Created queue: " + queueUrl);
// Queue with attributes
Map<String, String> attributes = new HashMap<>();
attributes.put(QueueAttributeName.VisibilityTimeout.toString(), "60");
attributes.put(QueueAttributeName.MessageRetentionPeriod.toString(), "1209600"); // 14 days
attributes.put(QueueAttributeName.DelaySeconds.toString(), "0");
attributes.put(QueueAttributeName.ReceiveMessageWaitTimeSeconds.toString(), "20"); // Long polling
CreateQueueRequest advancedRequest = new CreateQueueRequest()
.withQueueName("MyAdvancedQueue")
.withAttributes(attributes)
.addTagsEntry("Environment", "Production")
.addTagsEntry("Team", "Backend");
CreateQueueResult advancedResult = client.createQueue(advancedRequest);Create a FIFO (First-In-First-Out) queue for guaranteed message ordering and exactly-once processing.
// FIFO queue creation
Map<String, String> fifoAttributes = new HashMap<>();
fifoAttributes.put(QueueAttributeName.FifoQueue.toString(), "true");
fifoAttributes.put(QueueAttributeName.ContentBasedDeduplication.toString(), "true");
CreateQueueRequest fifoRequest = new CreateQueueRequest()
.withQueueName("MyQueue.fifo") // Must end with .fifo
.withAttributes(fifoAttributes);
CreateQueueResult fifoResult = client.createQueue(fifoRequest);Remove a queue and all its messages permanently.
DeleteQueueResult deleteQueue(DeleteQueueRequest request);
// Convenience method
DeleteQueueResult deleteQueue(String queueUrl);
class DeleteQueueRequest extends AmazonWebServiceRequest {
DeleteQueueRequest();
DeleteQueueRequest(String queueUrl);
String getQueueUrl();
DeleteQueueRequest withQueueUrl(String queueUrl);
}
class DeleteQueueResult {
// Empty result class - success indicated by no exception
}Usage Example:
// Delete queue
try {
client.deleteQueue(new DeleteQueueRequest(queueUrl));
System.out.println("Queue deleted successfully");
} catch (QueueDoesNotExistException e) {
System.err.println("Queue does not exist: " + e.getMessage());
}
// Note: After deletion, queue name cannot be reused for 60 secondsRetrieve the URL of an existing queue by name.
GetQueueUrlResult getQueueUrl(GetQueueUrlRequest request);
// Convenience method
GetQueueUrlResult getQueueUrl(String queueName);
class GetQueueUrlRequest extends AmazonWebServiceRequest {
GetQueueUrlRequest();
GetQueueUrlRequest(String queueName);
String getQueueName();
GetQueueUrlRequest withQueueName(String queueName);
String getQueueOwnerAWSAccountId();
GetQueueUrlRequest withQueueOwnerAWSAccountId(String queueOwnerAWSAccountId);
}
class GetQueueUrlResult {
String getQueueUrl();
}Usage Example:
// Get queue URL by name
GetQueueUrlRequest request = new GetQueueUrlRequest("MyQueue");
GetQueueUrlResult result = client.getQueueUrl(request);
String queueUrl = result.getQueueUrl();
// Cross-account queue access
GetQueueUrlRequest crossAccountRequest = new GetQueueUrlRequest()
.withQueueName("SharedQueue")
.withQueueOwnerAWSAccountId("123456789012");
GetQueueUrlResult crossAccountResult = client.getQueueUrl(crossAccountRequest);Retrieve URLs of queues with optional name prefix filtering.
ListQueuesResult listQueues(ListQueuesRequest request);
// Convenience methods
ListQueuesResult listQueues();
ListQueuesResult listQueues(String queueNamePrefix);
class ListQueuesRequest extends AmazonWebServiceRequest {
ListQueuesRequest();
ListQueuesRequest(String queueNamePrefix);
String getQueueNamePrefix();
ListQueuesRequest withQueueNamePrefix(String queueNamePrefix);
Integer getMaxResults();
ListQueuesRequest withMaxResults(Integer maxResults);
String getNextToken();
ListQueuesRequest withNextToken(String nextToken);
}
class ListQueuesResult {
List<String> getQueueUrls();
String getNextToken();
}Usage Example:
// List all queues
ListQueuesResult allQueues = client.listQueues();
for (String queueUrl : allQueues.getQueueUrls()) {
System.out.println("Queue: " + queueUrl);
}
// List queues with prefix
ListQueuesRequest prefixRequest = new ListQueuesRequest("prod-");
ListQueuesResult prodQueues = client.listQueues(prefixRequest);
// Paginated listing
ListQueuesRequest paginatedRequest = new ListQueuesRequest()
.withMaxResults(100);
ListQueuesResult page1 = client.listQueues(paginatedRequest);
if (page1.getNextToken() != null) {
ListQueuesResult page2 = client.listQueues(paginatedRequest
.withNextToken(page1.getNextToken()));
}Retrieve configuration and status information about a queue.
GetQueueAttributesResult getQueueAttributes(GetQueueAttributesRequest request);
// Convenience method
GetQueueAttributesResult getQueueAttributes(String queueUrl, List<String> attributeNames);
class GetQueueAttributesRequest extends AmazonWebServiceRequest {
GetQueueAttributesRequest();
GetQueueAttributesRequest(String queueUrl);
GetQueueAttributesRequest(String queueUrl, List<String> attributeNames);
String getQueueUrl();
GetQueueAttributesRequest withQueueUrl(String queueUrl);
List<String> getAttributeNames();
GetQueueAttributesRequest withAttributeNames(List<String> attributeNames);
GetQueueAttributesRequest withAttributeNames(String... attributeNames);
GetQueueAttributesRequest withAttributeNames(QueueAttributeName... attributeNames);
}
class GetQueueAttributesResult {
Map<String, String> getAttributes();
}Usage Example:
// Get all attributes
GetQueueAttributesRequest request = new GetQueueAttributesRequest(queueUrl)
.withAttributeNames(QueueAttributeName.All);
GetQueueAttributesResult result = client.getQueueAttributes(request);
Map<String, String> attributes = result.getAttributes();
// Display key attributes
System.out.println("Queue ARN: " + attributes.get("QueueArn"));
System.out.println("Messages Available: " + attributes.get("ApproximateNumberOfMessages"));
System.out.println("Messages in Flight: " + attributes.get("ApproximateNumberOfMessagesNotVisible"));
System.out.println("Visibility Timeout: " + attributes.get("VisibilityTimeout"));
// Get specific attributes
GetQueueAttributesRequest specificRequest = new GetQueueAttributesRequest(queueUrl)
.withAttributeNames(
QueueAttributeName.ApproximateNumberOfMessages,
QueueAttributeName.CreatedTimestamp,
QueueAttributeName.Policy
);
GetQueueAttributesResult specificResult = client.getQueueAttributes(specificRequest);Modify queue configuration by setting attribute values.
SetQueueAttributesResult setQueueAttributes(SetQueueAttributesRequest request);
// Convenience method
SetQueueAttributesResult setQueueAttributes(String queueUrl, Map<String, String> attributes);
class SetQueueAttributesRequest extends AmazonWebServiceRequest {
SetQueueAttributesRequest();
SetQueueAttributesRequest(String queueUrl, Map<String, String> attributes);
String getQueueUrl();
SetQueueAttributesRequest withQueueUrl(String queueUrl);
Map<String, String> getAttributes();
SetQueueAttributesRequest withAttributes(Map<String, String> attributes);
SetQueueAttributesRequest addAttributesEntry(String key, String value);
}
class SetQueueAttributesResult {
// Empty result class - success indicated by no exception
}Usage Example:
// Update queue attributes
Map<String, String> newAttributes = new HashMap<>();
newAttributes.put(QueueAttributeName.VisibilityTimeout.toString(), "120"); // 2 minutes
newAttributes.put(QueueAttributeName.MessageRetentionPeriod.toString(), "604800"); // 7 days
newAttributes.put(QueueAttributeName.ReceiveMessageWaitTimeSeconds.toString(), "20"); // Long polling
SetQueueAttributesRequest request = new SetQueueAttributesRequest()
.withQueueUrl(queueUrl)
.withAttributes(newAttributes);
client.setQueueAttributes(request);
// Set dead letter queue policy
String dlqPolicy = "{"
+ "\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:123456789012:MyDeadLetterQueue\","
+ "\"maxReceiveCount\":5"
+ "}";
SetQueueAttributesRequest dlqRequest = new SetQueueAttributesRequest()
.withQueueUrl(queueUrl)
.addAttributesEntry(QueueAttributeName.RedrivePolicy.toString(), dlqPolicy);
client.setQueueAttributes(dlqRequest);Remove all messages from a queue without deleting the queue itself.
PurgeQueueResult purgeQueue(PurgeQueueRequest request);
// Convenience method
PurgeQueueResult purgeQueue(String queueUrl);
class PurgeQueueRequest extends AmazonWebServiceRequest {
PurgeQueueRequest();
PurgeQueueRequest(String queueUrl);
String getQueueUrl();
PurgeQueueRequest withQueueUrl(String queueUrl);
}
class PurgeQueueResult {
// Empty result class - success indicated by no exception
}Usage Example:
try {
client.purgeQueue(new PurgeQueueRequest(queueUrl));
System.out.println("Queue purged successfully");
} catch (PurgeQueueInProgressException e) {
System.err.println("Purge already in progress: " + e.getMessage());
} catch (QueueDoesNotExistException e) {
System.err.println("Queue does not exist: " + e.getMessage());
}
// Note: Purge operation can only be called once every 60 secondsAll available queue attributes and their purposes:
enum QueueAttributeName {
All, // All attributes (for retrieval only)
Policy, // Queue access policy
VisibilityTimeout, // Message visibility timeout (seconds)
MaximumMessageSize, // Maximum message size (bytes)
MessageRetentionPeriod, // Message retention period (seconds)
ApproximateNumberOfMessages, // Approximate number of visible messages
ApproximateNumberOfMessagesNotVisible, // Approximate number of in-flight messages
CreatedTimestamp, // Queue creation timestamp
LastModifiedTimestamp, // Last modification timestamp
QueueArn, // Queue ARN
ApproximateNumberOfMessagesDelayed, // Approximate number of delayed messages
DelaySeconds, // Default delay for messages (seconds)
ReceiveMessageWaitTimeSeconds, // Long polling wait time (seconds)
RedrivePolicy, // Dead letter queue configuration
FifoQueue, // FIFO queue flag
ContentBasedDeduplication, // Content-based deduplication flag
KmsMasterKeyId, // KMS key for encryption
KmsDataKeyReusePeriodSeconds, // KMS data key reuse period
DeduplicationScope, // FIFO deduplication scope
FifoThroughputLimit, // FIFO throughput limit
RedriveAllowPolicy, // Dead letter queue allow policy
SqsManagedSseEnabled // SQS-managed encryption flag
}Common Attribute Values:
// Visibility timeout: 0 seconds to 12 hours (43200 seconds)
attributes.put("VisibilityTimeout", "300"); // 5 minutes
// Message retention: 60 seconds to 14 days (1209600 seconds)
attributes.put("MessageRetentionPeriod", "1209600"); // 14 days
// Maximum message size: 1024 bytes to 256 KB (262144 bytes)
attributes.put("MaximumMessageSize", "262144"); // 256 KB
// Delay seconds: 0 to 900 seconds (15 minutes)
attributes.put("DelaySeconds", "0");
// Long polling: 0 to 20 seconds
attributes.put("ReceiveMessageWaitTimeSeconds", "20");
// FIFO queue configuration
attributes.put("FifoQueue", "true");
attributes.put("ContentBasedDeduplication", "true");Common exceptions for queue operations:
try {
CreateQueueResult result = client.createQueue(request);
} catch (QueueNameExistsException e) {
// Queue exists with different attributes
System.err.println("Queue exists with different attributes: " + e.getMessage());
} catch (QueueDeletedRecentlyException e) {
// Queue was recently deleted (60 second cooldown)
System.err.println("Queue recently deleted, wait before recreating: " + e.getMessage());
}
try {
client.setQueueAttributes(request);
} catch (InvalidAttributeNameException e) {
System.err.println("Invalid attribute name: " + e.getMessage());
} catch (InvalidAttributeValueException e) {
System.err.println("Invalid attribute value: " + e.getMessage());
}
try {
client.purgeQueue(request);
} catch (PurgeQueueInProgressException e) {
System.err.println("Purge operation already in progress");
}Install with Tessl CLI
npx tessl i tessl/maven-com-amazonaws--aws-java-sdk-sqs