muffin

Crates.iomuffin
lib.rsmuffin
version0.1.1
sourcesrc
created_at2023-02-15 08:54:19.567326
updated_at2023-02-16 21:37:20.372228
descriptionMuffin is a background job processing library designed to work with MongoDB as its storage backend.
homepage
repositoryhttps://github.com/jiripospisil/muffin
max_upload_size
id785624
size109,098
Jiri Pospisil (jiripospisil)

documentation

README

Muffin

Muffin is a background job processing library designed to work with MongoDB as its storage backend.

Requires MongoDB 6 with feature compatibility level set to 6.

Example

// Connect to a database called "muffin_testing".
let client = Client::with_uri_str("mongodb://localhost:27017").await?;
let database = client.database("muffin_testing");

// The state is passed to each "process" method on an instance of Job.
let state = JobState {
    mongo_client: client,
};

let mut muffin = Muffin::new(database, Arc::new(state)).await?;

// Create a new job and push it for processing
muffin
    .push(MyJob {
        name: "Peter".into(),
    })
    .await?;

// Register jobs that should be processed.
muffin.register::<MyJob>();

// Start processing jobs.
tokio::select! {
    _ = muffin.run() => {},
    _ = tokio::signal::ctrl_c() => {
        eprintln!("Received ctrl+c!");
    }
};

// Need to wait for all in-flight jobs to finish processing.
muffin.shutdown().await;

License

  • MIT license
Commit count: 4

cargo fmt