Queues
Queues provide scalable, decoupled, asynchronous messaging between services. Unlike topics, messages in queues are pulled by consumers rather than pushed, making queues perfect for batch processing and handling workload spikes.
Quick Start
Here's a minimal example to get you started:
import { queue } from '@nitric/sdk'const taskQueue = queue('tasks').allow('enqueue', 'dequeue')// Send a message to the queueawait taskQueue.enqueue({task: 'process-data',data: {/* ... */},})// Process messages from the queueconst messages = await taskQueue.dequeue(10)for (const message of messages) {console.log(`Processing: ${message.task}`)await message.complete()}
Core Concepts
Queues
A queue is a named resource where messages can be sent and retrieved. Unlike topics, messages in queues are pulled by consumers rather than pushed, making queues ideal for batch processing and handling workload spikes.
Message Leasing
When messages are dequeued, they are temporarily hidden from other consumers through a leasing mechanism. This prevents multiple consumers from processing the same message simultaneously.
Permissions
Queues require explicit permissions for operations:
enqueue
: Send messages to the queuedequeue
: Retrieve messages from the queue
Common Operations
Sending Messages
const queue = queue('my-queue').allow('enqueue')// Send a single messageawait queue.enqueue({message: 'Hello consumer!',})// Send multiple messagesawait queue.enqueue([{ message: 'Task 1' }, { message: 'Task 2' }])
Processing Messages
const queue = queue('my-queue').allow('dequeue')// Dequeue and process messagesconst messages = await queue.dequeue(10)for (const message of messages) {console.log(`Processing: ${message.message}`)await message.complete()}
Cloud Provider Support
Each cloud provider comes with a set of default services used when deploying resources. You can find the default services for each cloud provider below.
Queues are mapped to SQS in AWS. For more details about the AWS implementation, including configuration options and limitations, see the AWS Queues documentation.
When running locally, queues use a local implementation for development and testing.
For best practices and patterns when working with queues, including handling message delivery guarantees and idempotency, see our Async Messaging Patterns Guide.