queues
import { enqueue, processBatch, type QueueMessageHandler } from "louisecms/queues";A thin wrapper over Cloudflare Queues. No peers.
enqueue(queue, message)
Section titled “enqueue(queue, message)”function enqueue<T>(queue: Queue<T>, message: T): Promise<void>;Sends one message onto a queue binding. A send failure is wrapped in
LouiseQueueError (original as cause).
await enqueue(env.COMMERCE_QUEUE, { type: "order.created", id });processBatch(batch, handler)
Section titled “processBatch(batch, handler)”function processBatch<T>( batch: MessageBatch<T>, handler: QueueMessageHandler<T>,): Promise<void>;
type QueueMessageHandler<T> = ( message: T, context: { attempts: number },) => void | Promise<void>;Drains a batch, running handler once per message. Each message is acked or
retried independently — one failing message doesn’t block the rest from
acking. processBatch never throws: a handler’s own error is caught and turned
into a retry(), so a Worker’s queue() export can be the whole body.
export default { async queue(batch: MessageBatch, env: Env) { await processBatch(batch, async (msg, { attempts }) => { // Throwing marks THIS message for retry; returning acks it. await handleEvent(msg, env); }); },};