Install bullmq via npm and create a Queue instance connected to Redis with the connection option
Add a repeatable job with queue.add('jobName', data, { repeat: { cron: 'YOUR_CRON_EXPRESSION' } }) or use every: milliseconds for interval-based repeats
Create a Worker instance with a concurrency option to process multiple jobs in parallel: new Worker('queueName', processor, { connection, concurrency: N })
Use queue.getRepeatableJobs() to list active repeatable jobs and queue.removeRepeatable('jobName', repeatOptions) to cancel them
Handle failed jobs with worker.on('failed', (job, err) => {}) and configure attempts and backoff in the job options for automatic retries
Known gotchas
Repeatable jobs use a special key in Redis; if you change the cron expression without removing the old job first, both the old and new schedules run concurrently
Worker concurrency processes that many jobs simultaneously within one worker process; for CPU-bound work, prefer multiple worker processes over high concurrency in one
BullMQ requires Redis 5+ with the MULTI/EXEC commands; using Redis Cluster requires careful key slot configuration because BullMQ uses Lua scripts that assume keys are on the same slot
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp