1mod base;
35mod job;
36mod queue;
37mod scheduler;
38mod worker;
39
40pub use base::*;
41pub use job::*;
42pub use queue::*;
43pub use scheduler::*;
44pub use worker::*;
45
46#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
48pub enum QueueType {
49 #[default]
51 Comm,
52 Getter,
54 NoWorker,
56 Single,
58}
59
60#[derive(Debug, Clone)]
64pub struct QueueConfig {
65 pub queue_type: QueueType,
67 pub default_job: job::JobOptions,
69 pub worker: worker::WorkerConfig,
71}
72
73pub mod prelude {
75 pub use crate::base::BaseQueue;
76 pub use crate::job::{Job, JobHandler, JobOptions, JobResult, JobStatus};
77 pub use crate::queue::Queue;
78 pub use crate::scheduler::Scheduler;
79 pub use crate::worker::Worker;
80 pub use crate::{QueueConfig, QueueType};
81 pub use async_trait::async_trait;
82 pub use serde::{Deserialize, Serialize};
83}
84
85#[derive(Debug, Clone)]
87pub struct TaskConfig {
88 pub redis_url: String,
90 pub prefix: String,
92 pub default_retries: u32,
94 pub default_timeout: u64,
96 pub concurrency: usize,
98}
99
100impl Default for TaskConfig {
101 fn default() -> Self {
102 Self {
103 redis_url: "redis://127.0.0.1:6379".to_string(),
104 prefix: "cool:task".to_string(),
105 default_retries: 3,
106 default_timeout: 60,
107 concurrency: 4,
108 }
109 }
110}