[−][src]Crate actix_redis_jobs
Actix-redis-jobs
Simple and reliable background processing for Rust using Actix and Redis
Getting Started
To get started, just add to Cargo.toml
[dependencies]
actix-redis-jobs = { version = "0.1" }
Prerequisites
A running redis server is required. You can quickly use docker:
docker run --name some-redis -d redis
Usage
use actix::prelude::*; use log::info; use serde::{Deserialize, Serialize}; use actix_redis_jobs::{Consumer, Jobs, Producer, Queue, QueueActor, MessageGuard}; #[derive(Serialize, Deserialize, Debug, Message)] #[rtype(result = "Result<(), ()>")] struct DogoJobo { dogo: String, meme: String, } struct DogoActor; impl Actor for DogoActor { type Context = Context<Self>; } impl Handler<Jobs<DogoJobo>> for DogoActor { type Result = (); fn handle(&mut self, msg: Jobs<DogoJobo>, _: &mut Self::Context) -> Self::Result { info!("Got sweet Dogo memes to post: {:?}", msg); let _guarded_messages: Vec<MessageGuard<DogoJobo>> = msg.0.into_iter().map(|m| { MessageGuard::new(m) }).collect(); //! It should complain of dropping an unacked message //! msg.ack() should do the trick } } fn main() { let system = actix::System::new("test"); std::env::set_var("RUST_LOG", "info"); env_logger::init(); Arbiter::spawn(async { let actor = QueueActor::new("redis://!127.0.0.1/", Queue::new("dogoapp")).await; let addr = Supervisor::start(move |_| actor); let p_addr = addr.clone(); let dogo_processor = DogoActor.start(); let consumer_id = String::from("doggo_handler_1"); Supervisor::start(move |_| Consumer::new(addr, dogo_processor.recipient(), consumer_id)); let producer = Producer::new(p_addr); let task = DogoJobo { dogo: String::from("Test Dogo Meme"), meme: String::from("https://!i.imgur.com/qgpUDVH.jpeg"), }; producer.push_job(task).await; }); let _s = system.run(); }
Structs
AckJob | Actix message implements request Redis to ack job |
Consumer | |
EnqueueJobs | Actix message implements request Redis to Enqueue scheduled jobs |
FetchJobs | Actix message implements request redis to fetch jobs |
Jobs | |
KillJob | Actix message implements request Redis to kill jobs |
MessageGuard | |
Producer | |
PushJob | Actix message implements request Redis to push job |
Queue | |
QueueActor | Actix Scheduler queue actor. |
ReenqueueActive | Actix message implements request Redis to reenqueue active jobs |
ReenqueueOrphaned | Actix message implements request Redis to reenqueue orphaned jobs |
RegisterConsumer | Actix message implements request Redis to kill jobs |
RetryJob | Actix message implements request Redis to retry jobs |
ScheduleJob | Actix message implements request Redis to schedule job |
Enums
JobStatus | Status of pushing a job. |
TaskError |