Available on crate feature
postgres
only.Expand description
Postgres storage for apalis. Uses NOTIFY
and SKIP LOCKED
§apalis-postgres
Allows using postgres as a Backend
§Postgres Example
use apalis::prelude::*;
use email_service::Email;
#[tokio::main]
async fn main() -> std::io::Result<()> {
std::env::set_var("RUST_LOG", "debug,sqlx::query=error");
let database_url = std::env::var("DATABASE_URL").expect("Must specify url to db");
let pool = PgPool::connect(&database_url).await.unwrap();
PostgresStorage::setup(&pool).await.unwrap();
let pg: PostgresStorage<Email> = PostgresStorage::new(pool);
async fn send_email(job: Email, data: Data<usize>) -> Result<(), Error> {
/// execute job
Ok(())
}
// This can be even in another program/language
// let query = "Select apalis.push_job('apalis::Email', json_build_object('subject', 'Test apalis', 'to', 'test1@example.com', 'text', 'Lorem Ipsum'));";
// pg.execute(query).await.unwrap();
Monitor::new()
.register({
WorkerBuilder::new(&format!("tasty-avocado"))
.data(0usize)
.backend(pg)
.build_fn(send_email)
})
.run()
.await
}
Structs§
- PgListen
- A listener that listens to Postgres notifications
- PgSubscription
- A postgres subscription
- Postgres
Storage - Represents a Storage that persists to Postgres
Enums§
- PgPoll
Error - Errors that can occur while polling a PostgreSQL database.