JavaScript APIs
Cloudflare Queues is integrated with Cloudflare Workers. To send and receive messages, you must use a Worker.
A Worker that can send messages to a Queue is a producer Worker, while a Worker that can receive messages from a Queue is a consumer Worker. It is possible for the same Worker to be a producer and consumer, if desired.
In the future, we expect to support other APIs, such as HTTP endpoints to send or receive messages. If you have any feedback about these APIs, please contact us and we would be happy to hear from you.
Producer
These APIs allow a producer Worker to send messages to a Queue.
type Environment = { readonly MY_QUEUE: Queue;
};
export default { async fetch(request: Request, env: Environment) { await env.MY_QUEUE.send({ url: request.url, method: request.method, headers: Object.fromEntries(request.headers), }); return new Response("Sent!"); },
};
Queue
A binding that allows a producer to send messages to a Queue.
interface Queue<Body = any> { send(body: Body): Promise<void>;
}
send(bodyany)Promise<void>- Sends a message to the Queue. The body can be any type supported by the structured clone algorithm, as long as its size is less than 128 KB.
- When the promise resolves, the message is confirmed to be written to disk.
Consumer
These APIs allow a consumer Worker to consume messages from a Queue.
To define a consumer Worker, add a queue function to the default export of the Worker. This will allow it to receive messages from the Queue.
export default { async queue(batch: MessageBatch, env: Environment) { for (const message of batch.messages) { console.log("Received", message); } },
};
MessageBatch
A batch of messages that are sent to a consumer Worker.
interface MessageBatch<Body = any> { readonly queue: string; readonly messages: Message<Body>[]; retryAll(): void;
}
queuestring- The name of the Queue that belongs to this batch.
messagesMessage[]- An array of messages in the batch. Ordering of messages is not guaranteed.
retryAll()void- Marks every message to be retried in the next batch.
Message
A message that is sent to a consumer Worker.
interface Message<Body = any> { readonly id: string; readonly timestamp: Date; readonly body: Body;
}
idstring- A unique, system-generated ID for the message.
timestampDate- A timestamp when the message was sent.
bodyany- The body of the message.
- The body can be any type supported by the structured clone algorithm, as long as its size is less than 128 KB.