Queue
Source:
src/AWS/SQS/Queue.ts
An Amazon SQS queue for reliable, decoupled message processing.
Queue owns the lifecycle of a standard or FIFO SQS queue. A queue name
is auto-generated from the app, stage, and logical ID unless you provide
one explicitly. FIFO queues automatically append the .fifo suffix.
Creating Queues
Section titled “Creating Queues”Standard Queue
import * as SQS from "alchemy/AWS/SQS";
const queue = yield* SQS.Queue("OrdersQueue");FIFO Queue
const queue = yield* SQS.Queue("OrdersFifoQueue", { fifo: true, contentBasedDeduplication: true,});Queue with Custom Settings
const queue = yield* SQS.Queue("ProcessingQueue", { visibilityTimeout: 120, messageRetentionPeriod: 86400, receiveMessageWaitTimeSeconds: 20,});Sending Messages
Section titled “Sending Messages”Bind send operations in the init phase and use them in runtime handlers.
// initconst sendMessage = yield* SQS.SendMessage.bind(queue);
return { fetch: Effect.gen(function* () { // runtime yield* sendMessage({ MessageBody: JSON.stringify({ orderId: "123" }), }); return HttpServerResponse.text("Queued"); }),};Event Sources
Section titled “Event Sources”Process messages from a queue using a Lambda event source mapping. Messages are automatically deleted after successful processing.
// inityield* SQS.messages(queue).process( Effect.fn(function* (message) { yield* Effect.log(`Received: ${message.body}`); }),);