Skip to content
v0.4.0 — Open Source

Job queueswithout Redis

A multi-backend job queue with a BullMQ-like API. PostgreSQL, SQLite, or in-memory — switch stores in one line. First-class TypeScript for Deno, Node.js, and Bun.

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: '[email protected]' });

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

Ready to ditch Redis?

Get started in under a minute. Full TypeScript, zero infrastructure.

Read the docs

Released under the MIT License.