Cloudflare Queues is a global message queuing service. Use the API to create queues, send messages, and manage consumers.
Overview
Access the Queues API:
import Cloudflare from 'cloudflare';
const client = new Cloudflare({
apiToken: process.env.CLOUDFLARE_API_TOKEN,
});
// Access Queues resources
const queues = client.queues;
Queues
Manage queue creation and configuration.
Create a queue
Create a new queue.
const queue = await client.queues.create({
account_id: '023e105f4ecef8ad9ca31a8372d0c353',
queue_name: 'my-queue',
});
Your Cloudflare account ID
The unique identifier for the queue
ISO 8601 timestamp when the queue was created
ISO 8601 timestamp when the queue was last modified
List queues
Retrieve all queues in your account.
for await (const queue of client.queues.list({
account_id: '023e105f4ecef8ad9ca31a8372d0c353',
})) {
console.log(queue);
}
Your Cloudflare account ID
Get a queue
Retrieve details about a specific queue.
const queue = await client.queues.get(
'023e105f4ecef8ad9ca31a8372d0c353',
{ account_id: '023e105f4ecef8ad9ca31a8372d0c353' }
);
Your Cloudflare account ID
Update a queue
Update queue configuration.
const queue = await client.queues.update(
'023e105f4ecef8ad9ca31a8372d0c353',
{
account_id: '023e105f4ecef8ad9ca31a8372d0c353',
queue_name: 'updated-queue-name',
settings: {
delivery_delay: 0,
message_retention_period: 345600, // 4 days
},
}
);
Your Cloudflare account ID
Number of seconds to delay delivery of all messages (0-43200)
settings.message_retention_period
Number of seconds to retain unconsumed messages (60-1209600, default: 345600)
Whether message delivery to consumers is paused
Delete a queue
Delete a queue.
await client.queues.delete(
'023e105f4ecef8ad9ca31a8372d0c353',
{ account_id: '023e105f4ecef8ad9ca31a8372d0c353' }
);
Your Cloudflare account ID
Messages
Send and receive messages from queues.
Send a message
Send a single message to a queue.
const response = await client.queues.messages.push(
'my-queue',
{
account_id: '023e105f4ecef8ad9ca31a8372d0c353',
body: JSON.stringify({ hello: 'world' }),
}
);
Your Cloudflare account ID
The message body (up to 128 KB)
Content type (default: ‘text/plain’)
Send multiple messages
Send multiple messages in a single request.
const response = await client.queues.messages.bulkPush(
'my-queue',
{
account_id: '023e105f4ecef8ad9ca31a8372d0c353',
messages: [
{ body: JSON.stringify({ id: 1 }) },
{ body: JSON.stringify({ id: 2 }) },
{ body: JSON.stringify({ id: 3 }) },
],
}
);
Your Cloudflare account ID
Array of message objects (up to 100 messages)
Pull messages
Pull messages from a queue (HTTP pull).
const messages = await client.queues.messages.pull(
'my-queue',
{
account_id: '023e105f4ecef8ad9ca31a8372d0c353',
batch_size: 10,
visibility_timeout_ms: 30000,
}
);
Your Cloudflare account ID
Number of messages to pull (1-100, default: 10)
Time in milliseconds to hide messages from other consumers (default: 30000)
Acknowledge messages
Acknowledge messages after processing.
await client.queues.messages.ack(
'my-queue',
{
account_id: '023e105f4ecef8ad9ca31a8372d0c353',
acks: [
{ lease_id: 'lease-id-1' },
{ lease_id: 'lease-id-2' },
],
}
);
Your Cloudflare account ID
Array of acknowledgment objects with lease IDs
Consumers
Manage queue consumers (Workers that process messages).
Create a consumer
Create a Worker consumer for a queue.
const consumer = await client.queues.consumers.create(
'my-queue',
{
account_id: '023e105f4ecef8ad9ca31a8372d0c353',
script_name: 'my-consumer-worker',
settings: {
batch_size: 10,
max_retries: 3,
max_wait_time_ms: 5000,
},
}
);
Your Cloudflare account ID
Name of the Worker script to process messages
Number of messages per batch (1-100, default: 10)
Maximum retry attempts (0-100, default: 3)
settings.max_wait_time_ms
Maximum time to wait for messages in milliseconds (default: 5000)
List consumers
Retrieve all consumers for a queue.
for await (const consumer of client.queues.consumers.list(
'my-queue',
{ account_id: '023e105f4ecef8ad9ca31a8372d0c353' }
)) {
console.log(consumer);
}
Delete a consumer
await client.queues.consumers.delete(
'my-queue',
consumerId,
{ account_id: '023e105f4ecef8ad9ca31a8372d0c353' }
);
Purge
Delete all messages from a queue.
Start purge
await client.queues.purge.start(
'my-queue',
{ account_id: '023e105f4ecef8ad9ca31a8372d0c353' }
);
Check purge status
const status = await client.queues.purge.status(
'my-queue',
{ account_id: '023e105f4ecef8ad9ca31a8372d0c353' }
);