A PostgreSQL-based provider implementation for Duroxide, a durable task orchestration framework for Rust.
Note: See CHANGELOG.md for version history and breaking changes.
Add to your Cargo.toml:
[dependencies]
duroxide-pg = "0.1"use duroxide_pg::PostgresProvider;
use duroxide::Worker;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Create a provider with the database URL
let provider = PostgresProvider::new("postgres://user:password@localhost:5432/mydb").await?;
// Use with a Duroxide worker
let worker = Worker::new(provider);
// ... register orchestrations and activities, then run
Ok(())
}To isolate data in a specific PostgreSQL schema:
let provider = PostgresProvider::new_with_schema(
"postgres://user:password@localhost:5432/mydb",
Some("my_schema"),
).await?;| Environment Variable | Description | Default |
|---|---|---|
DUROXIDE_PG_POOL_MAX |
Maximum connection pool size | 10 |
- Automatic schema migration on startup
- Connection pooling via sqlx
- Custom schema support for multi-tenant isolation
- Full implementation of the Duroxide
ProviderandProviderAdmintraits - Poison message detection with attempt count tracking
- Lock renewal for long-running orchestrations and activities
- Update to duroxide 0.1.8 with activity cancellation via lock stealing
- Remove experimental
ExecutionStatefrom provider API - Add
cancelled_activitiesparameter toack_orchestration_item - 80 provider validation tests (8 new)
- See CHANGELOG.md for full version history
MIT License - see LICENSE for details.