Skip to content

tasks-store ​

TaskStore trait + memory / file / sql / redis backends

Cratesova-tasks-store 0.1.4
Plugin idtasks-store
CategoryMessaging

Install ​

bash
cargo add sova --features tasks-store

Features ​

FeatureWhat you get
tasks-fileFile TaskStore.
tasks-redisRedis TaskStore on RedisPool.
tasks-sqlSQL TaskStore on DbPool.
tasks-storeTaskStore backends crate.

Overview ​

When: persist the task queue (memory / file / sql / redis) for tasks.

Does:

  • TaskStore trait + backends under sova::tasks::*
  • Soft-wire: Tasks::memory() / Tasks::sql(&app) / Tasks::redis(&app)
  • Or Tasks::new(Arc<dyn TaskStore>) for custom stores
  • SQL table sova_tasks; Redis / file drivers behind features

Example ​

rust
app.install(Db::from_env());
app.install(Tasks::sql(&app).job(/* … */));

// app.install(Tasks::memory().job(/* … */));
// app.install(Redis::from_env());
// app.install(Tasks::redis(&app).job(/* … */));

Features ​

FeatureBackend
tasks-storecrate + Memory
tasks-fileFile
tasks-sqlSql on DbPool (+ Tasks::sql)
tasks-redisRedis on RedisPool (+ Tasks::redis)

Usually enabled transitively with tasks + the driver you need.

Quick start ​

Construct a backend, pass into Tasks (soft-wire helpers prefer pool from state):

rust
use sova::{Db, Tasks};

app.install(Db::from_env());
app.install(Tasks::sql(&app).queues(["default"]).job(/* … */));

// or:
// app.install(Redis::from_env());
// app.install(Tasks::redis(&app).job(/* … */));
// app.install(Tasks::memory().job(/* … */));

Advanced (custom store):

rust
use std::sync::Arc;
let pool = app.try_state::<sova::DbPool>().unwrap().as_ref().clone();
app.install(Tasks::new(Arc::new(sova::tasks::Sql::from_db_pool(&pool))).job(/* … */));

Features: tasks-store, tasks-file, tasks-sql, tasks-redis.

tasks · redis · db