WIP
A dead simple (and probably very ineffecient) async job queue using Redis. Built for my own use-case, use at your own peril. Currently only supports Tokio.
cargo add simple-job-queue
```rust use std::time::Duration;
use asynctrait::asynctrait; use serde::{Deserialize, Serialize}; use simplejobqueue::{error::JobError, redis::RedisJobQueueBackend, Job, JobQueue, Processor};
pub struct Data { field: i32, }
pub struct DataProcessor;
impl Processor for DataProcessor { async fn process(&mut self, job: &Job) -> Result<(), JobError> { println!("{}", job.data.field);
Ok(())
}
}
async fn main() { let backend = RedisJobQueueBackend::new( "redis://127.0.0.1", "queuename".tostring(), ) .unwrap();
let mut queue: JobQueue<Data, RedisJobQueueBackend> = JobQueue::new(backend);
queue.start(DataProcessor).await;
queue.submit(Job::new(Data { field: 1 })).await.unwrap();
queue.submit(Job::new(Data { field: 2 })).await.unwrap();
queue.submit(Job::new(Data { field: 3 })).await.unwrap();
tokio::time::sleep(Duration::from_secs(10)).await;
} ```