Skip to content
v1.5.0 — Open Source

Job queues,your way

A multi-backend job queue with a BullMQ-like API. Pick your store — PostgreSQL, Redis, SQLite, or in-memory — and your runtime — Deno, Node.js, or Bun. Switch in one line.

Scheduling

Delays, cron expressions, and human-readable intervals like "every 2 hours" or "in 10 minutes".

Retry & Backoff

Fixed, exponential, or custom backoff. Configure max attempts, delays, and failure handling.

Concurrency

Per-worker and global cross-worker concurrency limits with distributed locking.

Rate Limiting

Sliding window rate limiter. Set max jobs per duration to protect downstream services.

Flows & Dependencies

Parent-child job trees. A parent waits until all children complete before executing.

Observables & Events

Reactive job observables and a rich event bus — progress, stalled, drained, and more.

queue.ts
import { Queue, Worker } from '@conveyor/core';
import { MemoryStore } from '@conveyor/store-memory';

const store = new MemoryStore();
const queue = new Queue<{ email: string }>('notifications', { store });

// Process jobs with full type safety
const worker = new Worker('notifications', async (job) => {
  await sendEmail(job.data.email);
}, { store, concurrency: 5 });

// Add a job — runs immediately
await queue.add('welcome', { email: 'user@example.com' });

// Schedule a job — runs in 30 seconds
await queue.add('reminder', { email: 'user@example.com' }, {
  delay: 30_000,
});
Deno 2Native
Node.js 18+Supported
Bun 1.1+Supported

Your stack, your rules.

Pick a store, pick a runtime, ship in under a minute. Full TypeScript, zero lock-in.

Read the docs

Released under the MIT License.