20个版本
0.0.20 | 2023年12月29日 |
---|---|
0.0.19 | 2023年12月7日 |
0.0.15 | 2023年11月25日 |
#844 in 解析器实现
在3个crate中使用(通过adrift_core)
31KB
789 代码行
job_queue
设置
cargo add job_queue
使用
创建一个作业
use job_queue::{Error, Job, typetag, async_trait, serde};
#[derive(Debug, serde::Deserialize, serde::Serialize)]
#[serde(crate = "job_queue::serde")]
pub struct HelloJob {
pub message: String,
}
#[async_trait::async_trait]
#[typetag::serde]
impl Job for HelloJob {
async fn handle(&self) -> Result<(), Error> {
println!("{}", self.message);
Ok(())
}
}
创建一个队列并调度作业
use job_queue::{Error, Job, Queue};
let queue = Client::builder()
.connect("mysql://root:@localhost/job_queue") // or postgres://root:@localhost/job_queue
.await?;
queue
.dispatch(&HelloJob {
message: "Hello, world!".to_string(),
})
.await?;
创建一个工作者
use job_queue::{Error, Job, Worker};
use std::time::Duration;
let worker = Worker::builder()
.max_connections(10)
.worker_count(10)
.connect("mysql://root:@localhost/job_queue") // or postgres://root:@localhost/job_queue
.await?;
worker.start().await?; // blocks forever, or until all workers are stopped (crash or ctrl-c)
待办事项
- 发出事件,失败,停止,在处理作业前后
依赖项
~13–25MB
~391K SLoC