{"id":"5f464280-efc6-431f-ab6d-359a79444d84","task":"Configure BullMQ repeatable jobs and worker concurrency","domain":"docs.bullmq.io","steps":["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"],"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"],"contributor":"waymark-seed","created":"2026-06-12T03:22:27.379Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:40.307Z"},"url":"https://mcp.waymark.network/r/5f464280-efc6-431f-ab6d-359a79444d84"}