3个版本 (破坏性更新)
使用旧的Rust 2015
0.3.0 | 2018年4月8日 |
---|---|
0.2.0 | 2018年4月7日 |
0.1.0 | 2018年4月4日 |
#31 in #background-jobs
36KB
701 代码行
这是Robin主crate的readme文件。您可以在我们的GitHub仓库找到帮助。
lib.rs
:
Robin
Robin允许您在后台运行作业。这可以是支付处理或发送电子邮件等。
如果您使用过Ruby on Rails的ActiveJob,您会感到非常熟悉。
入门
使用Robin的标准方式是通过jobs!
宏。它接受一个逗号分隔的作业名称列表,并为您生成所有样板代码。您只需在每个作业上定义一个名为perform
的静态方法。
以下是一个完整的示例
#[macro_use]
extern crate robin;
#[macro_use]
extern crate serde_derive;
#
#
#
use robin::prelude::*;
jobs! {
MyJob,
}
impl MyJob {
fn perform(args: JobArgs, _con: &WorkerConnection) -> JobResult {
println!("Job performed with {:?}", args);
Ok(())
}
}
#[derive(Serialize, Deserialize, Debug)]
pub struct JobArgs;
let config = Config::default();
let con = robin_establish_connection!(config)?;
assert_eq!(con.main_queue_size()?, 0);
assert_eq!(con.retry_queue_size()?, 0);
for i in 0..5 {
MyJob::perform_later(&JobArgs, &con)?;
}
assert_eq!(con.main_queue_size()?, 5);
assert_eq!(con.retry_queue_size()?, 0);
robin_boot_worker!(config);
assert_eq!(con.main_queue_size()?, 0);
assert_eq!(con.retry_queue_size()?, 0);
通常,将作业入队和启动工作进程的代码会在不同的二进制文件中。
有关更多详细信息,请参阅robin::macros
模块文档。
前言
Robin提供了一个前言模块,它导出了所有常用的类型和特性。使用Robin的代码预期将包含
use robin::prelude::*;
重新导出其他模块中最常用的类型和特性。只要您做的是标准的事情,这就是您唯一的use
。
依赖项
~3–4.5MB
~111K SLoC