I’m looking for essentially pub/sub but with at least once guarantee
I’m looking for essentially pub/sub but with at least once guarantee
undefined causing all sorts of problems

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>;