Skip to content
GitHubXDiscord

Queue

The Queue resource allows you to manage AWS SQS Queues and their configuration settings.

Create a basic SQS queue with default settings and a visibility timeout.

import AWS from "alchemy/aws/control";
const basicQueue = await AWS.SQS.Queue("basicQueue", {
QueueName: "BasicQueue",
VisibilityTimeout: 30, // Message visibility timeout in seconds
DelaySeconds: 0 // No initial delay for messages
});

Configure a FIFO queue with content-based deduplication and a message retention period.

const fifoQueue = await AWS.SQS.Queue("fifoQueue", {
QueueName: "MyFifoQueue.fifo",
FifoQueue: true,
ContentBasedDeduplication: true,
MessageRetentionPeriod: 86400 // Message retention for 1 day
});

Create a queue with server-side encryption using a KMS key.

const encryptedQueue = await AWS.SQS.Queue("encryptedQueue", {
QueueName: "EncryptedQueue",
KmsMasterKeyId: "arn:aws:kms:us-east-1:123456789012:key/abcd-1234-ef56-7890-abcd1234ef56", // Replace with your KMS ARN
SqsManagedSseEnabled: true,
ReceiveMessageWaitTimeSeconds: 20 // Long polling for receiving messages
});

Set up a dead letter queue with a redrive policy to handle message failures.

const deadLetterQueue = await AWS.SQS.Queue("deadLetterQueue", {
QueueName: "DeadLetterQueue",
MessageRetentionPeriod: 1209600 // 14 days
});
const mainQueue = await AWS.SQS.Queue("mainQueue", {
QueueName: "MainQueue",
RedrivePolicy: JSON.stringify({
deadLetterTargetArn: deadLetterQueue.Arn,
maxReceiveCount: 5 // Maximum times a message can be received before being sent to dead letter queue
}),
VisibilityTimeout: 30
});