Crates.io | muffin |
lib.rs | muffin |
version | 0.1.1 |
source | src |
created_at | 2023-02-15 08:54:19.567326 |
updated_at | 2023-02-16 21:37:20.372228 |
description | Muffin is a background job processing library designed to work with MongoDB as its storage backend. |
homepage | |
repository | https://github.com/jiripospisil/muffin |
max_upload_size | |
id | 785624 |
size | 109,098 |
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
.
// 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;