Module postgres

Source
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
PostgresStorage
Represents a Storage that persists to Postgres

Enums§

PgPollError
Errors that can occur while polling a PostgreSQL database.

Type Aliases§

PgPool
An alias for Pool, specialized for Postgres.