Monitor BullMQ and Bull Queue Jobs with CronRabbit

Node.js

The Problem

BullMQ repeatable jobs can fail silently if Redis is down, the worker crashes, or the job throws an unhandled error. Bull's built-in retry doesn't notify you of persistent failures.

The Solution

Add CronRabbit pings inside your worker processor function. Each repeatable job gets its own monitor for independent tracking.

Queue Job Monitoring Challenges

BullMQ manages retries internally, but after max retries are exhausted, the job moves to 'failed' state silently. CronRabbit detects this because the expected success ping never arrives.

Per-Job vs Per-Queue Monitoring

For repeatable/cron-like jobs, create one CronRabbit monitor per job type. For one-off jobs, monitor the overall queue health by pinging on completion events.

Code Examples

BullMQ repeatable job monitoring

JavaScript
const { Queue, Worker } = require("bullmq");

const queue = new Queue("email-digest");

// Add repeatable job (runs daily at 8 AM)
await queue.add("send-digest", {}, {
  repeat: { cron: "0 8 * * *" }
});

new Worker("email-digest", async (job) => {
  const PING = "https://ping.cronrabbit.com/digest-id";
  await fetch(`${PING}/start`);
  try {
    await sendDigestEmails();
    await fetch(PING);
  } catch (err) {
    await fetch(`${PING}/fail`);
    throw err;
  }
});

Ready to Monitor Your Cron Jobs?

Create your free account and add your first monitor in under 5 minutes. No credit card required.