Queue stuck until manual Send Message from Cloudflare Dashboard

Recently, my queue frequently stuck. This is the producer code (never changed since forever):

router
    .post('/nudge/jobs', async (req: Request, env: Env, _ctx: ExecutionContext) => {
        // The content is not important, as it's just a trigger
        for (let i = 0; i < 3; i++) {
            await env.JOB_KICKSTART.send({}, { delaySeconds: 0 });
        }

        return new Response('OK');
    })
    .all('*', () => new Response('Not found', { status: 404 }));


This is the consumer:

export default {
    async queue(_: any, env: Env, ctx: ExecutionContext) {
        await process(env, ctx);
    },
    ...router
};

async function process(env: Env, ctx: ExecutionContext): Promise<Response | void> {
    const sql = postgres(env.DB.connectionString);
    const logger = getLogger(ctx, env.LOG_TAIL_TOKEN);

    let remaining = await count(sql);
    ...
}


The only way to trigger the queue is by sending a dummy message from Cloudflare Dashboard (screenshot attached). What has changed in Cloudflare Queues?
Screenshot_2025-03-09_at_17.00.51.png
Was this page helpful?