Ack the message then push to the DLQ manually? It isn't quite the same, but it performs the same tas
Ack the message then push to the DLQ manually? It isn't quite the same, but it performs the same task
undefined causing all sorts of problems


this.state.id to just "hello", does it work? What are you actually trying to do?
this.state.id, which doesn't directly serialize to JSON. I've PR'ed the docs to fix this: https://github.com/cloudflare/cloudflare-docs/pull/14665 - it needs to be this.state.id.toString()queue() handler accepts a message, the Env, and the context per https://developers.cloudflare.com/queues/configuration/javascript-apis/#consumer
context.get('variable') within the queue? My CTX is empty within the Queue consumercontext.get might be a hono thing, i forgot, either way. I'm not sure how to access my variables that i set from my middlewaresthis.state.idthis.state.idthis.state.id.toString()queue()context.get('variable')context.gethono[[queues.consumers]]
queue = "my-queue"app.get('/manual-screenshot', async (c) => {
const url = c.req.query('url');
if (!url) {
return c.json({ message: 'Please provide a URL' });
}
const fullPageScreenshotUrl = await takeScreenshot(c.env.MYBROWSER, c.env.SCREENSHOT_BUCKET, url); // Function that takes screenshot, uploads to R2 bucket, and returns URL
return c.json({ fullPageScreenshotUrl });
});app.get('/take-screenshot', async (c) => {
const url = c.req.query('url');
if (!url) {
return c.json({ message: 'Please provide a URL' });
}
// Add to queue
await c.env.ScreenshotQueue.send({ url });
return c.json({ message: 'success' });
});
export default {
fetch: app.fetch,
async queue(batch, env): Promise<void> {
console.log(batch);
const messages = JSON.stringify(batch.messages);
console.log(`consumed from our queue: ${messages}`);
switch (batch.queue) {
case 'screenshot-queue':
for (const message of batch.messages) {
const { url } = message.body;
if (!url) {
console.error('Missing URL');
return;
}
const fullPageScreenshotUrl = await takeScreenshot(env.MYBROWSER, env.SCREENSHOT_BUCKET, url);
console.log(fullPageScreenshotUrl)
message.ack();
}
break;
}
},
} satisfies ExportedHandler<Env>;