Retour au classement

timgit/pg-boss

TypeScripttimgit.github.io/pg-boss/

Queueing jobs in Postgres from Node.js like a boss

postgresqlpostgresqueuenodejsnodejob
Croissance des étoiles
Étoiles
3.8k
Forks
254
Croissance hebdomadaire
Issues
18
1k2k3k
janv. 2023mars 2024mai 2025juil. 2026
Artefactsnpmnpm install pg-boss
README

Queueing jobs in Postgres from Node.js like a boss.

Build Coverage NPM

async function readme() {
  const { PgBoss } = require('pg-boss');
  const boss = new PgBoss('postgres://user:pass@host/database');

  boss.on('error', console.error)

  await boss.start()

  const queue = 'readme-queue'

  await boss.createQueue(queue)

  const id = await boss.send(queue, { arg1: 'read me' })

  console.log(`created job ${id} in queue ${queue}`)

  await boss.work(queue, async ([ job ]) => {
    console.log(`received job ${job.id} with data ${JSON.stringify(job.data)}`)
  })
}

readme()
  .catch(err => {
    console.log(err)
    process.exit(1)
  })

pg-boss is a job queue built in Node.js on top of PostgreSQL in order to provide background processing and reliable asynchronous execution to Node.js applications.

pg-boss relies on Postgres's SKIP LOCKED, a feature built specifically for message queues to resolve record locking challenges inherent with relational databases. This provides exactly-once delivery and the safety of guaranteed atomic commits to asynchronous job processing.

This will likely cater the most to teams already familiar with the simplicity of relational database semantics and operations (SQL, querying, and backups). It will be especially useful to those already relying on PostgreSQL that want to limit how many systems are required to monitor and support in their architecture.

Summary

  • Exactly-once job delivery
  • Create jobs in an existing db transaction, including adapters for popular ORMs such as Drizzle, Knex, Kysely, Prisma
  • Backpressure-compatible polling workers, including support for LISTEN/NOTIFY low latency delivery
  • Job dependency workflow orchestration
  • Cron scheduling, job deferral
  • Queue storage policies to support a variety of rate limiting, debouncing, and concurrency use cases
  • Priority queues, dead letter queues with redrive, automatic retries with exponential backoff
  • Pub/sub API for fan-out queue relationships
  • SQL support for non-Node.js runtimes for most operations
  • Serverless function compatible
  • Multi-master compatible (for example, in a Kubernetes ReplicaSet)
  • Additional database backends for Postgres-based databases such as CockroachDB, YugabyteDB and Citus. Or, use embedded PGlite for running entirely in-process.

CLI

pg-boss includes a command-line interface if needed for managing database migrations without writing code. This is useful for CI/CD pipelines, database setup scripts, or manual schema management.

See the CLI documentation for details.

Dashboard

A web-based dashboard is available in the @pg-boss/dashboard package for monitoring and managing jobs, queues and schedules.

See the dashboard documentation for details.

Proxy

A HTTP proxy is available in the @pg-boss/proxy package if needed to support use cases such as platform compatibility and connection pooling or scalability.

See the proxy documentation for details.

Requirements

  • Node 22.12 or higher for CommonJS's require(esm)
  • PostgreSQL 13 or higher

Documentation

Contributing

To setup a development environment for this library:

git clone https://github.com/timgit/pg-boss.git
npm install

To run the test suite, linter and code coverage:

npm run cover

The test suite will try and create a new database named pgboss. The config.json file has the default credentials to connect to postgres.

The Docker Compose file can be used to start a local postgres instance for testing:

docker compose up
Dépôts similaires
supabase/supabase

The Postgres development platform. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications.

TypeScriptnpmApache License 2.0firebasesupabase
supabase.com
106.8k13.2k
netdata/netdata

The fastest path to AI-powered full stack observability, even for lean teams.

GoGo ModulesGNU General Public License v3.0monitoringdocker
netdata.cloud
79.8k6.5k
nocodb/nocodb

🔥 🔥 🔥 A Free & Self-hostable Airtable Alternative

TypeScriptnpmOtherautomatic-apiairtable
nocodb.com
64.2k4.9k
makeplane/plane

🔥🔥🔥 Open-source Jira, Linear, Monday, and ClickUp alternative. Plane is a modern project management platform to manage tasks, sprints, docs, and triage.

TypeScriptnpmGNU Affero General Public License v3.0djangodocker
plane.so
54.8k5.1k
maybe-finance/maybe

The personal finance app for everyone

RubyRubyGemsGNU Affero General Public License v3.0financepersonal-finance
54.4k5.6k
twentyhq/twenty

The open alternative to Salesforce, designed for AI.

TypeScriptnpmOthercrmcustomer
twenty.com
53.4k8.1k
dbeaver/dbeaver

Free universal database tool and SQL client

JavaMavenApache License 2.0sqldatabase
dbeaver.io
51.1k4.3k
metabase/metabase

The easy-to-use open source Business Intelligence and Embedded Analytics tool that lets everyone work with data :bar_chart:

ClojureOtheranalyticsbusinessintelligence
metabase.com
48.3k6.7k
gogs/gogs

The painless way to host your own Git service

GoGo ModulesMIT Licensegogsgo
gogs.io
47.7k5.1k
discourse/discourse

A platform for community discussion. Free, open, simple.

RubyRubyGemsGNU General Public License v2.0discoursejavascript
discourse.org
47.5k9k
prisma/prisma

Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB and CockroachDB

TypeScriptnpmApache License 2.0prismaorm
prisma.io
47.4k2.4k
calcom/cal.diy

Scheduling infrastructure for absolutely everyone.

TypeScriptnpmMIT Licenseopen-sourcetypescript
cal.diy
46.7k14.5k