River Pro extends River with time-saving features and commercial support, including workflows. It supports Go, Ruby, and Rust and is available through a paid subscription, distributed as private Go modules, Ruby gems, and Rust crates. Plans are detailed on the pricing page.
River is open-source software and always will be. With your subscription, you are ensuring the sustainable maintenance and development of River.
After subscribing, see getting started with River Pro to install the private packages, initialize a client, and run Pro migrations. The guides use the same language selector as the core docs, with examples for Go, Ruby, and Rust.
API documentation
River Pro’s riverpro Go package has generated documentation hosted on this website. Docs are available for each released, along with the latest version always available at a fixed URL.
The Ruby client uses River::Pro::Client and River::Pro::Config, with the same ActiveRecord and Sequel drivers as the core client. Install riverqueue-pro from River’s private RubyGems source, then follow the Ruby examples in each feature guide.
Go modules and Ruby gems have independent version numbers. The existing Pro changelog records Go releases.
The Rust client uses riverqueue_pro::ProClient. Core jobs, workers, and database types come from riverqueue; workflows, batch workers, and encryption live in the Pro crate’s workflow, batch, and encrypt modules.
Follow the getting-started guide for compatible versions and access to River’s private Cargo registry. From an application with the dependency installed, generate local API documentation with:
cargo doc --package riverqueue-pro --openThe feature guides below include Rust examples. The client README and runnable examples are in the private Pro repository. Rust crates have independent version numbers; see the Rust changelog.
Guides by feature
With River Pro installed and its migrations applied, start using its features:
- Batching: Process groups of jobs together.
- Concurrency limits: Limit the number of concurrent jobs that can run at a time.
- Dead letter queue: A queue for failed jobs that can be retried or inspected.
- Durable periodic jobs: Periodic jobs that persist even if River is restarted.
- Encrypted jobs: Encrypt sensitive data in jobs.
- Ephemeral jobs: Jobs that are deleted after they finish running.
- Per-queue job retention: Control how long each queue retains finalized jobs.
- Sequences: Execute a series of jobs in a guaranteed one-at-a-time sequential order.
- Workflows: Define a graph of interdependent jobs to express complex, multi-step workflows.
- More coming soon. Let us know what you’d like to see next.