CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-amazonaws--aws-java-sdk-sqs

The AWS Java SDK for Amazon SQS module provides client classes for communicating with Amazon Simple Queue Service

Pending
Overview
Eval results
Files

queue-operations.mddocs/

Queue Operations

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 Queue

Create Standard Queue

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 FIFO Queue

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);

Delete Queue

Delete Queue

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 seconds

Queue URL Management

Get Queue URL

Retrieve 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);

List Queues

List All Queues

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()));
}

Queue Attributes

Get Queue Attributes

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);

Set Queue Attributes

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);

Queue Maintenance

Purge Queue

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 seconds

Queue Attribute Reference

Standard Queue Attributes

All 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");

Error Handling

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

docs

async-operations.md

buffered-client.md

client-management.md

dead-letter-queues.md

index.md

message-operations.md

message-visibility.md

queue-operations.md

queue-permissions.md

queue-tagging.md

tile.json