# riverqueue/river

Fast and reliable background jobs in Go

Repository: https://github.com/riverqueue/river
Canonical: https://ross.abutalabs.com/products/riverqueue-river
Homepage: https://riverqueue.com
Language: Go
License: MPL-2.0
License Family: copyleft
Topics: background-jobs, go, golang, postgres, postgresql, queue
Last push: 2026-08-25T13:25:28+00:00

## Health v2 (maintenance only)
Score: 94/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 99, release rhythm 99, longevity 73
- inputs: {"age_days": 1029, "days_push": 8, "days_rel": 8, "gap_med": 11, "n_releases_24m": 48}
- flags: no_readme
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 5604, forks 174 (observed 2026-08-28T04:09:22.920937+00:00)

## What it is
River is a Go library providing a fast, reliable background job queue backed by PostgreSQL or SQLite, with transactional enqueueing so jobs are committed atomically alongside application data. It includes multiple queues, unique and recurring/cron jobs, retries, snoozing, test helpers, and a web interface, with optional Pro features like workflows and dead letter queues.

## Use cases
- run background jobs in a Go application
- enqueue jobs transactionally with Postgres
- schedule recurring cron jobs in Go
- avoid running Redis for job queues
- send onboarding emails after user signup
- process long-running tasks like video encoding in a separate queue
- guarantee a job runs only once per period

## When to choose
- your Go app already uses PostgreSQL or SQLite and you want no extra queue infrastructure
- you need atomic enqueueing with database transactions to avoid lost jobs
- you want built-in retries, unique jobs, cron scheduling, and a web UI
- you prefer a simpler architecture over Redis-backed queues like Sidekiq-style systems

## When to avoid
- you need extremely high throughput beyond what Postgres-backed polling can handle
- your stack is not Go or does not use Postgres/SQLite
- you need advanced features like workflows, batching, or dead letter queues without paying for River Pro
- you require support for brokers like RabbitMQ, Kafka, or Redis

## Facets
- artifact type: library
- maturity: active
- function: message-queue, scheduling, workflow-automation, cli
- domain: backend, databases, developer-tools
- platform: go, windows, self-hosted
- tags: background-jobs, job-queue, postgres, sqlite, transactional-enqueueing, cron-jobs, worker-pool, go-library, automation, linux, macos, docker

## Member repositories
- riverqueue/river (main) score 94

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:09:22.920937+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T17:55:27.070423+00:00, confidence not recorded.
  - homepage: https://riverqueue.com (fetched 2026-08-29T08:50:20.207064+00:00, sha 866f4b3ec69c)
  - site_page: https://riverqueue.com/docs (fetched 2026-08-29T08:50:20.209653+00:00, sha f091ac21e417)
  - site_page: https://riverqueue.com/about (fetched 2026-08-29T08:50:20.211325+00:00, sha d468cb5083a2)
  - site_page: https://riverqueue.com/docs/transactional-enqueueing (fetched 2026-08-29T08:50:20.213246+00:00, sha e8ceb10d7415)
  - site_page: https://riverqueue.com/docs/multiple-queues (fetched 2026-08-29T08:50:20.214819+00:00, sha 1e34062a2d4a)
  - site_page: https://riverqueue.com/docs/unique-jobs (fetched 2026-08-29T08:50:20.216422+00:00, sha 583af853f201)
  - site_page: https://riverqueue.com/docs/periodic-jobs (fetched 2026-08-29T08:50:20.218226+00:00, sha 1644ee945143)
  - site_page: https://riverqueue.com/docs/snoozing-jobs (fetched 2026-08-29T08:50:20.219936+00:00, sha 4198e5adc57f)
  - site_page: https://riverqueue.com/docs/transactional-job-completion (fetched 2026-08-29T08:50:20.221448+00:00, sha 490f9aa6570b)
- Data as of 2026-08-30T08:39:29.467469+00:00.
