2个版本
0.1.1 | 2020年12月16日 |
---|---|
0.1.0 | 2020年12月16日 |
#2050 在 数据库接口
9KB
131 行
Redyq
虽然这个项目规模较小,但任何形式的贡献都是受欢迎的,无论是想法还是代码。所以如果您想做出贡献,请随意使用您可用的任何GitHub功能——问题、pr等。
这是什么
Redyq是一个简单的Redis队列接口,旨在允许任何Rust服务轻松实现分布式队列集成。它还力求快速且可靠,因为这个软件不应成为应用程序的瓶颈,并且与任何队列一样,数据不应丢失。
入门
虽然还在起步阶段,但redyq提供了一套功能,可以提供队列、出队和处理作业的工具——以及一些有限的重试功能。遵循简单性的主题,redyq有两个关键的公开函数 create_queue
和 create_worker
。
create_queue
此函数返回一个 Queue
对象,这是我们使用 add
函数向队列添加对象的关键对象。目前它仅连接到本地端口6379的Redis实例,但这将是可配置的。
目前,create_queue
的唯一参数是 queue_name
参数,正如您所期望的,是队列名称。此结构体上的函数 add
接受两个参数,作业名称 (job_name
) 和作业消息数据 (message
) - 注意 message
接受一个 serde_json::Value
。
示例
// This creates a queue
let queue: Queue = redyq::create_queue(String::from("example-queue").unwrap());
// This adds a job to the queue
queue.add(String::from("example-job", serde_json::from_str("{\"test_key\":\"test_value\"}").unwrap());
create_worker
此函数返回一个 Worker
对象,这是我们消费队列作业的关键对象。目前它仅连接到本地端口6379的Redis实例,但这将是可配置的。
目前,create_worker
的唯一参数是 queue_name
,这是您希望消费的队列名称。《Worker》 有一个方法,即 start
方法,该方法接受一个处理器,该处理器针对队列中的每个作业运行,并返回 Result<(), Box<dyn Error>
- 如果此结果为 Ok,则工作器将作业移动到完成队列,否则将其移动到失败队列,以便可以重试。
示例
// This creates a Worker
let worker: Worker = redyq::create_worker(String::from("example-queue")).unwrap();
// This starts the Worker with a provessor which just prints the job name
worker.start(|job: Job| {
println!("{}", job.name);
Ok(())
});
依赖关系
~3–4.5MB
~114K SLoC