SQS
Simple Queue Service is a fully managed queue service, means AWS handles the infrastructure and scaling. The API is indeed a bit simpler compared to RabbitMQ or Kafka.
Create a Queue
aws sqs create-queue --queue-name queue0
Using the SDK
bun add @aws-sdk/client-sqs
Publish a Message
Add sqs-send.ts:
import {
SQSClient,
SendMessageCommand,
GetQueueUrlCommand
} from "@aws-sdk/client-sqs"
const sqs = new SQSClient({})
const {QueueUrl} = await sqs.send(new GetQueueUrlCommand({QueueName: "queue0"}))
const data = await sqs.send(new SendMessageCommand({
QueueUrl,
MessageBody: "Hello, World!"
}))
console.log(data.MessageId)
Run it with bun sqs-send.ts.
Then add sqs-receive.ts:
import {
SQSClient,
ReceiveMessageCommand,
DeleteMessageCommand,
GetQueueUrlCommand
} from "@aws-sdk/client-sqs"
const sqs = new SQSClient({})
const {QueueUrl} = await sqs.send(new GetQueueUrlCommand({QueueName: "queue0"}))
const {Messages} = await sqs.send(new ReceiveMessageCommand({
QueueUrl,
MaxNumberOfMessages: 10,
WaitTimeSeconds: 20
}))
if (Messages) {
Messages.forEach(async message => {
console.log("Message:", message.Body)
await sqs.send(new DeleteMessageCommand({
QueueUrl,
ReceiptHandle: message.ReceiptHandle
}))
console.log("Message deleted")
})
}
Run it with bun sqs-receive.ts.