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

MIT 许可证

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